在“C Primer Plus 5 / e”一书中,我看到作者写道:
C标准规定浮动必须至少能够代表 6个重要数字,允许至少
10^(-37)
到的范围10^(+37)
。
但是为了这样做并同时使用自然大小,它需要4个字节。 所以事实上,人们的范围可以从10 ^( - 63)到10 ^(+ 63),参见
http://en.wikipedia.org/wiki/Floating_point#Internal_representation
所以我在脑海中提出了一个问题:为什么C标准选择范围at least 10^(-37) to 10^(+37)
的要求。当然,可能需要考虑计算速度。但除此之外,有没有理由不使用完整的32位空间?
答案 0 :(得分:5)
C标准以它的方式编写,允许C语言在各种机器上实现,具有多种硬件。通过限制实际表示REQUIRED,有更多可能的机器可以使用C“而不违反规则”。
浮点处理器(特别是WERE)不一定使用IEEE-754。
此外,我认为你的10 ^( - 63).. 10 ^(+ 63)是一个误解。 32位浮点数的范围为2 ^(+/- 127),这意味着大约10 ^(+/- 37)(2 ^ 127~ = 10 ^ 37)。