Haskellにsprintfに相当するものはありますか?
double 値を文字列に変換してフォーマットする必要があります。
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が必要かもしれません。