2

我有以下输出 - 我很惊讶。任何帮助为什么“我的双打”似乎如此低?

Prelude GHC.Float> floatRange (0.5e1000::Double)

(-1021,1024)

Prelude GHC.Float> show (0.5e1000::Double)

“无穷”

指数 1000 似乎与 1024 限制相去甚远(正如我期望 IEEE 包含这个 ::Double 一样)。

我会很感激你的帮助。

4

2 回答 2

7

最有可能的floatRange是返回二进制(以 2 为底)指数的范围。您在这里设置了一个以 10 为底的指数 1024,因此您要求以 2 为底的指数达到 3402 左右。

于 2011-10-20T17:18:00.427 回答
4

0.5e1000并不意味着“2 ^ 1000”。它的意思是“0.5 * 10^1000”,实际上远远超出了可表示的双精度值的范围。

于 2011-10-20T19:01:13.777 回答