2013-03-22 65 views
15

Haskell中是否存在sprintf等價物?Haskell printf轉爲字符串

我需要使用格式Double值轉換爲String,所以,有沒有另一種方式,而不使用printf種功能。

的主要問題是避免:

Prelude> putStrLn myDoubleVal 
1.7944444444444447e-2 

我想,而不是

Prelude> putStrLn . sprintf "%.2f" $ myDoubleVal 
1.79 

回答

39

是的,它在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 
+2

檢查,我不知道它打印IO和字符串具有相同的功能。 – Zhen 2013-03-22 09:04:54

+2

類型系統魔術:) – 2013-03-22 09:05:24

+3

@ Zhen一個類型安全的版本可能是有趣的:http://hpaste.org/79643 E.g.格式(str。「 - 」。str。「/」。int)「Hello!」 「世界!」 123 – 2013-03-22 09:29:38