我知道Haskell有原生数据类型,允许你有非常大的整数,所以像这样的东西
>> let x = 131242358045284502395482305
>> x
131242358045284502395482305按照预期工作。我想知道是否有类似的“大精度浮点”原生结构可以使用,比如
>> let x = 5.0000000000000000000000001
>> x
5.0000000000000000000000001是有可能的。如果我在Haskell中输入它,如果我超过15位小数(双精度),它将被截断为5。
发布于 2013-06-02 08:54:17
具体取决于您要查找的内容:
Float和languages.Rational --几乎就是你所知道的所有其他IntegersFixedPoint中的浮点数和双精度数,它是Double的Ratio --这个包提供了任意大小的定点数值。例如,如果您想要一个由64个整数位和64个小数位表示的数字,则可以使用FixedPoint6464。如果您想要一个1024整数位和8个小数位的数字,那么使用$(mkFixedPoint 1024 8)生成类型FixedPoint1024_8.numbers包-非常酷。发布于 2013-06-02 08:12:15
Haskell本身并没有高精度的浮点数。
对于用于此目的的包/模块/库,我将参考this answer to another post。还有一个示例展示了如何使用这个包,名为。
发布于 2015-12-13 22:27:16
如果你需要高精度/快速/浮点计算,你可能需要使用FFI和long doubles,因为原生Haskell类型还没有实现(参见https://ghc.haskell.org/trac/ghc/ticket/3353)。
https://stackoverflow.com/questions/16878251
复制相似问题