使用以下代码片段:
(fromIntegral 100)/10.00
使用 Haskell '98 标准前奏,我如何用两位小数表示结果?
谢谢。
使用以下代码片段:
(fromIntegral 100)/10.00
使用 Haskell '98 标准前奏,我如何用两位小数表示结果?
谢谢。
仅作记录:
import Numeric
formatFloatN floatNum numOfDecimals = showFFloat (Just numOfDecimals) floatNum ""
您可以使用printf :: PrintfType r => String -> r来自Text.Printf:
Prelude> import Text.Printf
Prelude Text.Printf> printf "%.2f\n" (100 :: Float)
100.00
Prelude Text.Printf> printf "%.2f\n" $ fromIntegral 100 / 10.00
10.00
%f将第二个参数格式化为浮点数。%.2f表示只打印小数点后两位数。\n代表换行符。对于这个例子,它不是绝对必要的。
请注意,此函数根据上下文返回一个Stringor类型的值。IO a示范:
Prelude Text.Printf> printf "%.2f" (1337 :: Float) ++ " is a number"
"1337.00 is a number"
在这种情况下printf返回字符串"1337.00",因为结果作为参数传递给(++),这是一个需要列表参数的函数(注意String与 相同[Char])。因此,它的printf行为sprintf也与其他语言一样。当然,不需要附加第二个字符串之类的技巧。您可以明确指定类型:
Prelude Text.Printf> printf "%.2f\n" (1337 :: Float) :: IO a
1337.00
Prelude Text.Printf> printf "%.2f\n" (1337 :: Float) :: String
"1337.00\n"