我得到了下面的输出——我很惊讶。为什么"我的双打"这么低?
前奏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",实际上远远超出了可表示的双精度值的范围。