0

重複の可能性:
JavaScriptの数学は壊れていますか?

戻ります

5.074999999999999

何故ですか?

そして、他にどのような数字がこれの同様のデモンストレーションを与えるでしょうか?

4

3 に答える 3

6

浮動小数点演算に関する必読。

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

手短に:

無限に多くの実数を有限数のビットに圧縮するには、近似表現が必要です。無限に多くの整数がありますが、ほとんどのプログラムでは、整数計算の結果を 32 ビットで格納できます。対照的に、ビット数が固定されている場合、実数を使用したほとんどの計算では、その数のビットを使用して正確に表現できない量が生成されます。したがって、浮動小数点計算の結果は、その有限表現に適合させるために丸めなければならないことがよくあります。この丸め誤差が浮動小数点演算の特徴です。

于 2012-06-06T21:06:23.330 に答える
4

さて、古典的な例は次のとおりです。

0.1 + 0.2 = 0.30000000000000004

IEEE 754倍精度浮動小数点数 ( JavaScript が使用するもの) は非常に優れていますが、完全ではありません。それらは、浮動小数点数の計算をほぼ正確に実行する高速な方法を提供しますが、完全ではありません。すべての数値システムには、このような妥協点があります (たとえば 、限られた数の 10 進数で正確に表現するようにしてください。つまり、PI についても同様です)。1 / 3

于 2012-06-06T21:07:10.383 に答える
4

それは正常です – 浮動小数点数を扱う際には、精度と呼ばれるものがあります。現代の言語のほとんどに存在します。詳細については、 http ://www.mredkj.com/javascript/nfbasic2.htmlを参照してください。

この考え方では、EPS (イプシロン値) を使用せずに浮動小数点数を比較することはできません。さらに詳しい情報が必要な場合は、お気軽にお問い合わせください。

于 2012-06-06T21:07:12.763 に答える