Haskell printf to String

Zhe*_*hen 19 string haskell

在Haskell中是否存在sprintf等价物?

我需要将格式Double值转换为String,所以,有没有使用printf类函数的另一种方法.

主要问题是避免:

Prelude> putStrLn myDoubleVal
1.7944444444444447e-2
Run Code Online (Sandbox Code Playgroud)

我想要

Prelude> putStrLn . sprintf "%.2f" $ myDoubleVal
1.79
Run Code Online (Sandbox Code Playgroud)

Chr*_*lor 46

是的,它在Text.Printf模块中,它只是被调用printf.

> import Text.Printf
> let x = 1.14907259
> putStrLn . printf "%.2f" $ x
1.15
Run Code Online (Sandbox Code Playgroud)

请注意,返回类型printf是重载的,因此它能够返回String(如上例所示),但它也能够返回执行打印的I/O操作,因此您实际上不需要调用putStrLn:

> printf "%.2f\n" x
1.15
Run Code Online (Sandbox Code Playgroud)

  • @Zhen一个类型安全的版本可能会引起关注:http://hpaste.org/79643例如格式(str." - ".str."/".int)"你好!" "世界!" 123 (3认同)
  • 检查,我不知道它打印IO和String具有相同的功能. (2认同)