JavaScriptでたまーに計算する時にバグが発生する時があります。
サンプルをちょっと作ってみました。
var decimal = 101.1; var int = 50; var result = 101.1 - int; alert(result); //51.0999999999999・・・4と表示される |
先ほど、バグと書きましたが、実はこれ本当はバグではなく、こういう仕様なんです。
2進数で計算しているので、その際に、誤差が発生してしまうのです。
仮に上の計算結果を正しく求めたい場合は、下のように実装すれば取得することができます。
var decimal = 101.1; var int = 50; var result = (decimal*10 - int*10)/10; |
ちなみに、JavaScriptは、JavaScript、お前もか(小数点を含む計算について)を参考にすると、IEEE 754を採用しているみたいです。
まー何はともわれ、浮動小数点数が絡んでくる計算の場合には注意したいですね。
他の参考:質問:数値の掛け算の不具合について
0 コメント:
コメントを投稿