回到课程

一个偶发的无限循环

重要程度: 4

这个循环是无限的。它永远不会结束。为什么?

let i = 0;
while (i != 10) {
  i += 0.2;
}

那是因为 i 永远不会等于 10

运行它以查看 i 的实际值:

let i = 0;
while (i < 11) {
  i += 0.2;
  if (i > 9.8 && i < 10.2) alert( i );
}

他们中没有一个完全是 10

发生这样的事情是因为在添加像 0.2 这样的分数时出现了精度损失。

结论:在处理小数部分时避免相等检查。