21

Haskell 中是否有 sprintf 等价物?

我需要将双精度值转换并格式化为字符串。

有没有不使用printf类函数的另一种方法?

主要问题是避免:

Prelude> putStrLn myDoubleVal
1.7944444444444447e-2

相反,我想要这个:

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

3 回答 3

51

是的,它在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
于 2013-03-22T09:03:07.557 回答
3

Text.Printf可能是您需要的。

于 2013-03-22T09:02:52.513 回答
0

格式化是创建格式化字符串的一个选项,如果您想要 '"s"printf' 并且不需要与 printf 样式完全兼容。

于 2022-01-04T03:49:15.023 回答