2

重複の可能性:
浮動小数点の問題を理解する

このページには簡単なアラートがあります。

alert(185.3 + 12.37);

私にとって、それは197.67に等しいはずです

ただし、私がテストしたブラウザー(OSXではChrome / Safari、Win7ではFF)では、答えは次のとおりです。

197.67000000000002

何故ですか?これは単なる既知のバグですか、それともJavaScriptの追加に私が認識している以上のものがありますか?

4

3 に答える 3

8

javascriptはdoubleデータ型を使用しますが、2進数の場所が制限されているため、すべての10進数を正確に表現することはできません(すべての数値を有限の2進数で表現できるわけではありません)。あなたはウィキペディアでもっと読むことができます。

于 2011-04-11T01:24:17.637 に答える
3

あなたはこれを読むべきです:

http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html

これはバグではありません。これは、すべての言語の浮動小数点数のよく知られた事実です。

于 2011-04-11T01:27:34.087 に答える
2

2 進数では、これは無限に繰り返される 2 進数の小数11000101.10(10101110000101000111)であり、有限のビット数では表すことができないため、近似値に丸められます。

于 2011-04-11T01:29:44.760 に答える