使用以下代码片段:
(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
代表换行符。对于这个例子,它不是绝对必要的。
请注意,此函数根据上下文返回一个String
or类型的值。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"