偶発的な無限ループ
重要性: 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
のような少数を足すときの精度の低下によりこのようなことが起こります。
結論: 小数部分を扱うとき、等価チェックを避けましょう。