重複の可能性:
JavaScriptの浮動小数点演算は壊れていますか?
これは非常に初歩的な計算機科学の質問になるでしょう。次のC#について考えてみます(JSについても同じことが言えます。一般的に、doubleで数学がどのように機能するかを推測します)。
var i = .01;
i+=.01; //i=.02
i+=.01; //i=.03
i+=.01; //i=.04
i+=.01; //i=.05
i+=.01; //i=.0600000000005 (I may have added/missed a few 0s in there)
i+=.01; //i=.07
i+=.01; //i=.08
i+=.01; //i=.09
i+=.01; //i=.0999999999992 (I may have added/missed a few 9s in there)
では、何が起こっているのでしょうか。また、i +.01の合計を正確に予測するにはどうすればよいでしょうか。