标签: floating-point equality
可能重复: Addition of Double values inconsistent
int x = 0; float n = 0; while ( n != 1 ) { n += 0.1; ++x; }
我想知道为什么这个循环是无限的?
答案 0 :(得分:16)
0.1无法在浮点中完全表示:
0.1
printf("%.16f\n", 0.1f);
显示:
0.1000000014901161
所以n永远不会完全等于1。
n
1
正如@sirlak在下面的评论中所说,测试浮点变量是否正确永远不会正确。