GHC 7.0.3 拒绝将 2^1000 显示为归一化双精度输出"infinity"



我得到了下面的输出——我很惊讶。为什么"我的双打"这么低?

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

(-1021、1024)

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

"无限"

指数1000似乎离1024的限制相当远(因为我期望IEEE包含这个::Double)。

谢谢你的帮助。

最有可能的是,floatRange返回的是二进制(以2为基数)指数的范围。你在这里设置的是以10为基数的指数是1024,所以你要求以2为基数的指数达到3402左右。

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

最新更新