2013-06-01 33 views
20

私はHaskellはあなたが期待通りHaskellの高精度浮動小数点数は?

>> let x = 131242358045284502395482305 
>> x 
131242358045284502395482305 

仕事のようなものので、本当に大きな整数を持つことができるようにネイティブなデータ型を持って知っています。同様の「大型精密フロート」

>> let x = 5.0000000000000000000000001 
>> x 
5.0000000000000000000000001 

のようなものが可能かもしれないので、私は、使用している可能性天然構造があった場合、私は思っていました。私がHaskellでこれを入力すると、小数点以下15桁を超えると、5に切り詰められます(倍精度)。

+1

まあ、適切な精度分数のために 'Data.Ratio'に' Rational'が常にあります。しかし、一般的に答えは、どのオペレーションをサポートする必要があるかによって異なります。 – Vitus

+0

私は['Rational'](http://hackage.haskell.org/packages/archive/base/latest/doc/html/Prelude.html#t:Rational)はあなたの目的には合いません。 'フローティング'インスタンス? – leftaroundabout

+2

最高の精度を得るために:http://www.haskell.org/haskellwiki/Exact_real_arithmetic (AERNの実装はしばらくの間働いていません...今は他の候補があるかどうかわかりません) – luqui

答えて

16

  • FloatDouble - ほとんど何を知っていると「愛」フロートとダブルスから他のすべての言語インチ
  • RationalInteger S
  • FixedPointRatioある - このパッケージは、任意のサイズの固定小数点値を提供します。たとえば、64の整数ビットと64の小数ビットで表される数値を使用する場合は、FixedPoint6464を使用できます。 1024の整数ビットと8つの小数ビットの数値を使用する場合は、を生成するために$(mkFixedPoint 1024 8)を使用します。
  • 編集:はい、私はちょうど上記のnumbersパッケージについて学んだ - 非常にクールです。
+1

'base'には[Data.Fixed](http://www.haskell.org/ghc/docs/latest/html/libraries/base/Data-Fixed.html)もあります。 – hammar

+4

また、[実数](http://hackage.haskell.org/package/cyclotomic)のライブラリは、まだ正確で、すべての有理数などを含み、計算可能な実数よりも決定可能な述語があります。 –

7

ハスケルには精度の高い浮動小数点数がありません。

この目的のためのパッケージ/モジュール/ライブラリについては、this answer to another postを参照してください。また、このパッケージの使用方法を示す例があり、numbersと呼ばれています。あなたが探している正確に何によって

+1

私はこのパッケージがあなたの要求に正確に合っているかどうかはわかりません。ちょうどそれをチェックしてください。 ;) –

+0

[hmpfrパッケージ](http://hackage.haskell.org/package/hmpfr)もご覧ください。 – vinc17

0

あなたは、高精度/高速な/浮動小数点演算が必要な場合は、ネイティブのHaskellの型が(https://ghc.haskell.org/trac/ghc/ticket/3353を参照)はまだ実装されていないとして、FFIと長いダブルスを使用する必要があります。

関連する問題