3

重複の可能性:
JavaScript の浮動小数点演算は壊れていますか?

注 - parseFloat() に関する他の投稿を読みましたが、問題が発生する理由についての適切な説明が見つかりませんでした。(または、私はそれを理解していませんでした)。

このコード...

var sum = parseFloat("1.001") + parseFloat(".001");

alert(parseFloat(sum));​

出力 ...

1.0019999999999998

加算sum.toFixed(2)には小数点以下 2 桁のみが含まれることを読みました。

しかし、この長い小数が発生する理由を 100% 理解しているわけではありません。

バイナリでparseFloat(sum)表しますか? sumもしそうなら、1/2^x + ... は .001 または 1/1000 に正確に等しくならないので、1.001 はバイナリで表現できませんか?

4

1 に答える 1

2

これはJavascriptに固有のものではなく、IEEE浮動小数点数が内部でどのように表されて精度エラーが発生するかを示しています。

ここでは内容を再現しませんが、例で何が起こっているのかを説明するのに役立つリソースがたくさんあります。

これが1つです:http://www.petebecker.com/js/js200006.html

于 2012-12-08T03:56:09.130 に答える