javascript数学不累加

javascript数学不累加

This question already has answers here:
Is floating point math broken?
                                
                                    (31个答案)
                                
                        
                                4年前关闭。
            
                    
我有一个表格,用户可以在其中简单地将两个字段相乘。然后使用jquery将方程的结果放置在另一个输入字段中。

quantity =         Number($('#quantity').val());
price =            Number($('#price').val());

subtotal = quantity * price;




$("input#subtotal").val(subtotal);


但是...这些数字加起来没有!!

我收到非常奇怪的答案,逗号后面有小数点长。运行控制台时:

console.log(subtotal, price+ "x" + quantity + "=" + subtotal);


它从字面上指出:

--> 1.07 x 1001 = 1071.0700000000002


最好的解决方案是什么?

最佳答案

我通过添加以下内容解决了此浮点问题:

myvar = myvar.toFixed(2).replace(/0{0,2}$/, "")


这似乎对价格类型的计算效果很好。

编辑:

正如Joseph Marikle在评论中指出的那样,这可能会导致出现数字问题,例如1071.0007。

myvar = Number(myvar.toFixed(2))


因此看起来是一个更优雅的解决方案。

关于javascript - javascript数学不累加,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35327660/

10-10 15:00