Haskellにはネイティブのデータ型があり、非常に大きな整数を使用できるので、
>> let x = 131242358045284502395482305
>> x
131242358045284502395482305
期待どおりに動作します。私が使用できる同様の「大精度フロート」ネイティブ構造があるかどうか疑問に思っていたので、
>> let x = 5.0000000000000000000000001
>> x
5.0000000000000000000000001
可能かもしれません。これをHaskellに入力すると、小数点以下15桁を超えると、5に切り捨てられます(倍精度)。
あなたが探しているものに正確に応じて:
Float
とDouble
-他のすべての言語のFloatsandDoublesからあなたが知っていて「愛している」ことのほとんど。Rational
これはRatio
sのInteger
ですFixedPoint
-このパッケージは、任意のサイズの固定小数点値を提供します。たとえば、64個の整数ビットと64個の小数ビットで表される数値が必要な場合は、_FixedPoint6464
_を使用できます。 1024整数ビットと8小数ビットの数値が必要な場合は、$(mkFixedPoint 1024 8)
を使用してタイプ_FixedPoint1024_8
_を生成します。numbers
パッケージについて学びました-とてもクールです。Haskellは素朴に高精度の浮動小数点数を持っていません。
この目的のためのパッケージ/モジュール/ライブラリについては、 別の投稿へのこの回答 を参照します。このパッケージの使用方法を示す例もあります。これはnumbersと呼ばれます。
高精度の/ fast /浮動小数点計算が必要な場合は、ネイティブのHaskell型がまだ実装されていないため、FFIとlong doubleを使用する必要があります( https://ghc.haskell.org/trac/を参照) ghc/ticket/335 )。