为什么加上小数浮动是错误的?

时间:2011-05-29 13:46:09

标签: floating-point equality

  

可能重复:
  Addition of Double values inconsistent

int x = 0;
float n = 0;
while ( n != 1 ) {
n += 0.1;
++x;
}

我想知道为什么这个循环是无限的?

1 个答案:

答案 0 :(得分:16)

0.1无法在浮点中完全表示:

printf("%.16f\n", 0.1f);

显示:

0.1000000014901161

所以n永远不会完全等于1

正如@sirlak在下面的评论中所说,测试浮点变量是否正确永远不会正确。