重複の可能性:
JavaScript の数学は壊れていますか?
面白い質問ですが、16.1 で JavaScript が「クレイジー」になるのはなぜですか? :)
コード:
var value1=16.1;
var value2=16.2;
console.log(value1 * 1000);
console.log(value2 * 1000);
出力:
16100.000000000002
16200
なんで?
重複の可能性:
JavaScript の数学は壊れていますか?
面白い質問ですが、16.1 で JavaScript が「クレイジー」になるのはなぜですか? :)
コード:
var value1=16.1;
var value2=16.2;
console.log(value1 * 1000);
console.log(value2 * 1000);
出力:
16100.000000000002
16200
なんで?
これは、javascript が内部的にすべてを double にキャストするためです。その結果、浮動小数点の不正確さにより、すべての計算に多少のノイズが含まれます。 浮動小数点の不正確さの例
この問題を解決する 1 つの方法は、すべての中間計算の後、最も近い int に丸めることです。