2013-03-22 6 views
15

ハスケルにはsprintfに相当するものはありますか?Haskell printf to String

ダブル値を文字列に変換する必要があります。printf種類の関数を使用しないで別の方法がありますか?

Prelude> putStrLn myDoubleVal 
1.7944444444444447e-2 

私は何が必要かもしれない代わりに

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

答えて

39

はい、Text.Printfモジュールにあり、それはちょうどprintfと呼ばれています。それは(上記の例のように)Stringを戻すことができるのですが、それはまた、印刷を行うI/O動作を戻すことができるのです、そうなるようにprintfの戻り値の型は、過負荷になっていることを

> import Text.Printf 
> let x = 1.14907259 
> putStrLn . printf "%.2f" $ x 
1.15 

(注)実際にputStrLnへの呼び出しは必要ありません。

> printf "%.2f\n" x 
1.15 
+2

をチェックし、私はそれは同じ機能でIOと文字列の両方を出力します知りませんでした。 – Zhen

+2

システムマジックタイプ: –

+3

@Zhenタイプセーフなバージョンが関心のあるかもしれません:http://hpaste.org/79643 format(str。 " - " str。 "/"。int) "こんにちは!" "世界!" 123 –