Haskell中的高精度浮点数?

MYV*_*MYV 25 precision haskell

我知道Haskell有本机数据类型,允许你有如此大的整数

>> let x = 131242358045284502395482305
>> x
131242358045284502395482305
Run Code Online (Sandbox Code Playgroud)

按预期工作.我想知道是否有一个类似的"大精度浮动"本机结构,我可以使用,所以像

>> let x = 5.0000000000000000000000001
>> x
5.0000000000000000000000001
Run Code Online (Sandbox Code Playgroud)

可能是可能的.如果我在Haskell中输入它,如果我超过15位小数(双精度),它会截断为5.

Tho*_*son 20

取决于您正在寻找的确切内容:

  • Float并且Double- 几乎所有其他语言中的Floats和Doubles都知道并"爱".
  • Rational这是一个RatioInteger小号
  • FixedPoint - 此包提供任意大小的固定点值.例如,如果您想要一个由64位积分位和64位小数位表示的数字,则可以使用FixedPoint6464.如果你想要一个1024个整数位和8个小数位的数字,那么用它$(mkFixedPoint 1024 8)来生成类型FixedPoint1024_8.
  • 编辑:是的,我刚刚了解了numbers上面提到的包 - 非常酷.

  • 还有一个[cyclotomic numbers](http://hackage.haskell.org/package/cyclotomic)的库,它们仍然是精确的,包括所有的有理数和更多,并且具有比可计算的实数更多的可判定谓词. (4认同)
  • `base` 中还有 [Data.Fixed](http://www.haskell.org/ghc/docs/latest/html/libraries/base/Data-Fixed.html)。 (3认同)

Mek*_*ire 9

Haskell没有天生的高精度浮点数.

对于用于此目的的包/模块/库,我将参考另一篇文章的答案.还有一个示例显示如何使用此包,称为数字.