重複の可能性:
浮動小数点の問題を理解する
このページには簡単なアラートがあります。
alert(185.3 + 12.37);
私にとって、それは197.67に等しいはずです
ただし、私がテストしたブラウザー(OSXではChrome / Safari、Win7ではFF)では、答えは次のとおりです。
197.67000000000002
何故ですか?これは単なる既知のバグですか、それともJavaScriptの追加に私が認識している以上のものがありますか?
重複の可能性:
浮動小数点の問題を理解する
このページには簡単なアラートがあります。
alert(185.3 + 12.37);
私にとって、それは197.67に等しいはずです
ただし、私がテストしたブラウザー(OSXではChrome / Safari、Win7ではFF)では、答えは次のとおりです。
197.67000000000002
何故ですか?これは単なる既知のバグですか、それともJavaScriptの追加に私が認識している以上のものがありますか?
javascriptはdouble
データ型を使用しますが、2進数の場所が制限されているため、すべての10進数を正確に表現することはできません(すべての数値を有限の2進数で表現できるわけではありません)。あなたはウィキペディアでもっと読むことができます。
あなたはこれを読むべきです:
http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html
これはバグではありません。これは、すべての言語の浮動小数点数のよく知られた事実です。
2 進数では、これは無限に繰り返される 2 進数の小数11000101.10(10101110000101000111)
であり、有限のビット数では表すことができないため、近似値に丸められます。