javascript 小数の計算結果がおかしくなる
- 作成日 2020.11.04
- 更新日 2022.07.16
- javascript
- javascript
javascriptで、少数の計算を行うと結果がおかしくなることが多いので、正しく計算するサンプルコードを記述してます。
環境
- OS windows10 pro 64bit
- Apache 2.4.43
- ブラウザ chrome 103.0.5060.114
小数の計算
例えば、「0.1 + 0.1」であれば正しい結果になりますが、
console.log(0.1 + 0.1); // 0.2
「0.1 + 0.1 + 0.1」になると、以下の結果のように正しく計算されません。
console.log(0.1 + 0.1 + 0.1); // 0.30000000000000004
console.log(1 - 0.9); // 0.09999999999999998
これは、javascriptのIEEE 754(浮動小数点数演算標準) という規格により起こる問題で、10のn倍して整数に戻して計算すれば大抵改善されますが、ここでも問題が発生します。
console.log(77.99 * 100); // 7798.999999999999
問題を解消するには、以下のように整数部と小数部に分けて、整数への変換を行う必要があります。
console.log(77 * 100 + 0.99 * 100);
実際に、「 77.99 – 0.9 」の計算を行には、以下のようにする必要があります。
console.log(77.99 - 0.9); // 77.08999999999999
console.log((77 * 100 + 0.99 * 100 - 0.9 * 100) / 100); // 77.09
-
前の記事
javascript 指定したサイトに移動する 2020.11.04
-
次の記事
docker composeを使ってAlfrescoを構築するまでの手順 2020.11.04
コメントを書く