Haskell中是否存在sprintf等價物?Haskell printf轉爲字符串
我需要使用格式Double值轉換爲String,所以,有沒有另一種方式,而不使用printf種功能。
的主要問題是避免:
Prelude> putStrLn myDoubleVal
1.7944444444444447e-2
我想,而不是
Prelude> putStrLn . sprintf "%.2f" $ myDoubleVal
1.79
Haskell中是否存在sprintf等價物?Haskell printf轉爲字符串
我需要使用格式Double值轉換爲String,所以,有沒有另一種方式,而不使用printf種功能。
的主要問題是避免:
Prelude> putStrLn myDoubleVal
1.7944444444444447e-2
我想,而不是
Prelude> putStrLn . sprintf "%.2f" $ myDoubleVal
1.79
是的,它在Text.Printf模塊中,它只是叫做printf
。
> import Text.Printf
> let x = 1.14907259
> putStrLn . printf "%.2f" $ x
1.15
注意的printf
返回類型超載,以便它能夠返回一個String
(如上面的例子),但它也能夠返回的I/O操作,做印刷的,所以你實際上並不需要撥打電話putStrLn
:
> printf "%.2f\n" x
1.15
Text.Printf可能是你所需要的。
檢查,我不知道它打印IO和字符串具有相同的功能。 – Zhen 2013-03-22 09:04:54
類型系統魔術:) – 2013-03-22 09:05:24
@ Zhen一個類型安全的版本可能是有趣的:http://hpaste.org/79643 E.g.格式(str。「 - 」。str。「/」。int)「Hello!」 「世界!」 123 – 2013-03-22 09:29:38