2

次の出力があります-そして私は驚いています。「私のダブルス」が非常に低いように見える理由はありますか?

前奏曲 GHC.Float> floatRange (0.5e1000::Double)

(-1021,1024)

前奏曲 GHC.Float> show (0.5e1000::Double)

「無限」

指数 1000 は 1024 の制限からかなり離れているようです (IEEE に ::Double が含まれていると予想していたため)。

よろしくお願いします。

4

2 に答える 2

7

最も可能性が高いのは、バイナリ(基数2)指数floatRangeの範囲を返すことです。ここでは、1024の基数10の指数を設定しているので、3402程度に達するように基数2の指数を要求しています。

于 2011-10-20T17:18:00.427 に答える
4

0.5e1000「2^1000」という意味ではありません。これは「0.5 * 10^1000」を意味し、実際には表現可能な倍精度値の範囲を大きく超えています。

于 2011-10-20T19:01:13.777 に答える