我知道Haskell有原生数据类型,它允许您拥有非常大的整数,因此,
>> let x = 131242358045284502395482305
>> x
131242358045284502395482305
我想知道是否有一个类似的“大精度浮点”本机结构可以使用,所以像
>> let x = 5.0000000000000000000000001
>> x
5.0000000000000000000000001
可能是可能的。如果我在Haskell中输入这个,如果我超过15个小数位(双精度),它会截短到5。
4条答案
按热度按时间68bkxrlz1#
具体取决于您的需求:
Float
和Double
-几乎是你所知道的和“爱”从浮点数和双在所有其他语言。Rational
,它是Integer
s的Ratio
FixedPoint
-此套件提供任意大小的定点值。例如,如果您想要一个由64个整数比特和64个分数比特表示的数字,您可以使用FixedPoint6464
。如果您想要一个由1024个整数比特和8个分数比特表示的数字,则使用$(mkFixedPoint 1024 8)
来产生FixedPoint1024_8
型别。numbers
包-非常酷。8nuwlpux2#
Haskell本身没有高精度浮点数。
对于这个用途的包/模块/库,我会参考另一篇文章的答案。还有一个例子展示了如何使用这个包,叫做 * numbers *。
nvbavucw3#
如果你需要高精度/快速/浮点计算,你可能需要使用FFI和长双精度,因为原生的Haskell类型还没有实现(参见https://ghc.haskell.org/trac/ghc/ticket/3353)。
ujv3wf0j4#
我认为任意精度浮点数的标准包现在是https://hackage.haskell.org/package/scientific