0

在《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 标准选择 range 的要求at least 10^(-37) to 10^(+37)。当然,可能会考虑计算速度。但除此之外,还有什么理由不使用完整的 32 位空间吗?

4

1 回答 1

5

C 标准以它的方式编写,以允许 C 语言在具有广泛硬件的各种机器上实现。通过限制 REQUIRED 的实际表示,有更多可能的机器可以“不违反规则”使用 C。

有些浮点处理器(尤其是 WERE)不一定使用 IEEE-754。

此外,我认为您的 10^(-63) .. 10^(+63) 是一种误解。32 位浮点数的范围为 2^(+/-127),这意味着大约 10^(+/-37) (2^127 ~= 10^37)。

于 2013-02-11T18:57:29.383 回答