【发布时间】:2012-10-18 05:45:52
【问题描述】:
int main() {
float a = 20000000;
float b = 1;
float c = a+b;
if (c==a) { printf("equal"); }
else { printf("not equal");}
return 0;
}
当我运行它时,它显示“相等”。 但是当我将 a 的值更改为 2000000(少一个零)时,答案是否定的。 为什么?
【问题讨论】:
-
相对较小的值(此处为 1)添加到较大的值后完全消失的机制在浮点词汇表中称为“吸收”。
标签: c types floating-point floating-point-precision