int x = 0;
float n = 0;
while (n != 1) {
n += 0.1;
++x;
}
我不知道为什么这个循环是无限的?
int x = 0;
float n = 0;
while (n != 1) {
n += 0.1;
++x;
}
我不知道为什么这个循环是无限的?
0.1
不能精确浮点表示:
printf("%.16f\n", 0.1f);
显示:
0.1000000014901161
所以n
永远不会完全等于1
。
正如@sirlak在下面的评论中所说的,它几乎是从来没有正确测试浮点变量是否相同。
http://floating-point-gui.de/ – 2011-05-29 13:47:41
Nice x-ref,@Neil,完整的链接,或关于这个主题的规范作品的副本。 – 2011-05-29 13:59:13