如何在Haskell中更改双精度值的精度?

时间:2019-03-28 12:36:47

标签: haskell

我想更改双精度值的精度。

例如:

我需要从3.141592653589793获得3.14

我希望功能如下:

scale :: Int -> Double -> Double
> scale 2 3.141592653589793
3.14
> scale 3 3.141592653589793
3.141

此外,我希望能够选择舍入策略。

round :: ROUND -> Int -> Double -> Double
> round ROUNDUP 5 3.141592653589793
3.1416
  • 我该怎么办?
  • 如何为其应用舍入策略?

PS:

Java中的预期行为应将setScale设置为BigDecimal:https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html

1 个答案:

答案 0 :(得分:3)

Java BigDecimal的正确Haskell类似物是Fixed,而不是Double。您可以通过realToFrac在不同的精度之间进行转换。