【发布时间】:2012-09-17 18:45:52
【问题描述】:
float a = 0;
while (true)
{
a++;
if (a > 16777216)
break; // Will never break... a stops at 16777216
}
谁能向我解释为什么在这段代码中浮点值在 16777216 处停止递增?
编辑:
或者更简单:
float a = 16777217; // a becomes 16777216
【问题讨论】:
-
如果这样的事情引起了你的注意,我强烈建议你阅读:每个计算机科学家都应该知道的浮点运算知识。它解释了它们是如何在硬件中实现的,并涵盖了您最终会遇到的所有问题。 docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
标签: c# floating-point