浮点范围内还是范围外?

时间:2011-10-09 21:56:45

标签: c++

以下这两个例子都有8个有效数字,但第一个案例没有给出任何警告,而第二个案例确实如此,为什么?

float f1 = 11111111;
float f2 = 99999999;

浮点数据类型是否有7或8个有效数字?

1 个答案:

答案 0 :(得分:9)

签出this article:IEEE754 32位浮点数具有24位尾数(提示省略前导1)。现在2 24 是16'777'216。这意味着你的第一个号码11'111'111非常合适,但第二个号码不合适。

不幸的是二进制与十进制不一样,所以在讨论精度时,大部分时间我们都在谈论二进制数字,浮点数有24个重要数字。 (有一个“二进制数字”的缩写让我逃脱。)转换是log 2 10,大约是3.32,所以你得到“7.22十进制数字”。