This question already has answers here:
Is floating point math broken?
(31个答案)
4年前关闭。
我有一个表格,用户可以在其中简单地将两个字段相乘。然后使用jquery将方程的结果放置在另一个输入字段中。
和
但是...这些数字加起来没有!!
我收到非常奇怪的答案,逗号后面有小数点长。运行控制台时:
它从字面上指出:
最好的解决方案是什么?
这似乎对价格类型的计算效果很好。
编辑:
正如Joseph Marikle在评论中指出的那样,这可能会导致出现数字问题,例如1071.0007。
因此看起来是一个更优雅的解决方案。
(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