舍入数到指定的位数

时间:2012-09-16 20:34:41

标签: haskell numerical

是否有一个简单的功能可以将DoubleFloat舍入到指定的位数?我在这里搜索了Hoogle((Fractional a) => Int -> a -> a),但没有找到任何东西。

3 个答案:

答案 0 :(得分:33)

不确定是否存在任何标准函数,但您可以这样做:

 (fromInteger $ round $ f * (10^n)) / (10.0^^n)

答案 1 :(得分:8)

这取决于你要用舍入数字做什么。

如果您想在计算中使用它,则应使用Data.Decimal库中的Decimal

如果您只想很好地格式化数字,则应使用标准库(Text.Printf包)中的base

答案 2 :(得分:1)

λ: ((/100) $ fromIntegral $ round (0.006 * 100)) == 0.006
λ: False

λ: ((/100) $ fromIntegral $ round (0.06 * 100)) == 0.06
λ: True