Haskell 中是否有 sprintf 等价物?
我需要将双精度值转换并格式化为字符串。
有没有不使用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
请注意,返回类型 ofprintf
是重载的,因此它能够返回 a String
(如上例所示),但它也能够返回执行打印的 I/O 操作,因此您实际上不需要调用putStrLn
:
> printf "%.2f\n" x
1.15
Text.Printf可能是您需要的。
格式化是创建格式化字符串的一个选项,如果您想要 '"s"printf' 并且不需要与 printf 样式完全兼容。