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