1. ホーム
  2. javascript

JavaScriptの小数の足し算の問題 [重複]。

2023-10-13 08:46:23

質問

ということで、2つの数字(10進数)を足し算するスクリプトを作っているのですが、問題が発生しました。

http://jsfiddle.net/DerekL/esqnC/

スクリプトを作ってみた、なかなかいい感じに仕上がった。

0.1 + 0.5  //0.6
0.2 + 0.3  //0.5

しかし、すぐに私は参照してください。

0.1 + 0.2  //0.30000000000000004
0.01 + 0.06  //0.06999999999999999

と、私には正しく見えません。有限ビットの浮動小数点を使っている欠点であることは分かっているのですが、それを修正する方法が見付からないのです。

Math.ceil   //No
Math.floor  //No
.slice      //No

アップデイト

まず1000倍して、足してから1000で割ることは可能でしょうか?

どのように解決するのですか?

使用方法 toFixed を使って、小数点以下の桁数を削った文字列に変換し、それを数値に戻してください。

+(0.1 + 0.2).toFixed(12) // 0.3

見た目はIEの toFixed の挙動がおかしいようなので、IEをサポートする必要がある場合は、このようなものが良いかもしれません。

Math.round((0.1 + 0.2) * 1e12) / 1e12