javascript数学没有加起来
我有一个表单,用户可以对两个字段进行简单的乘法。然后使用jquery将等式的结果放入另一个输入字段中javascript数学没有加起来,javascript,jquery,math,Javascript,Jquery,Math,我有一个表单,用户可以对两个字段进行简单的乘法。然后使用jquery将等式的结果放入另一个输入字段中 quantity = Number($('#quantity').val()); price = Number($('#price').val()); subtotal = quantity * price; 及 但是…这些数字加起来是不正确的 我得到了非常奇怪的答案,逗号后面有很长的小数。运行我的控制台时: console.log(subtotal,
quantity = Number($('#quantity').val());
price = Number($('#price').val());
subtotal = quantity * price;
及
但是…这些数字加起来是不正确的
我得到了非常奇怪的答案,逗号后面有很长的小数。运行我的控制台时:
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))
因此看起来是一个更优雅的解决方案。我通过添加以下内容解决了这个浮点问题:
myvar = myvar.toFixed(2).replace(/0{0,2}$/, "")
这似乎适用于价格类型的计算
编辑:
正如Joseph Marikle在评论中指出的,这可能会导致1071.0007等数字出现问题
myvar = Number(myvar.toFixed(2))
因此,看起来是一个更优雅的解决方案。浮点不准确。如果您计划将所有Javascript数字用作数字,则所有Javascript数字都是浮点(即
var.toFixed(2)。替换(/0{0,2}$/,“”);
bit),您将遇到类似1071.0007
的数字问题。结果是“1071”。
。我建议使用Number(var.toFixed(2))
,但不要使用var
。据我所知,它是JS中的一个保留字。浮点不准确。所有Javascript数字都是浮点,如果您计划将其用作数字(var.toFixed(2)。替换(/0{0,2}$/,”;
bit),您将遇到类似1071.0007
的数字问题。结果是“1071”。
。我建议使用Number(var.toFixed(2))
,但不要使用var
。据我所知,这是JS中的一个保留字。你不应该把它作为答案,而是对你的问题进行编辑。因为你的问题是“这里发生了什么?”,而不是“我怎样才能去掉这些小数”,所以你不应该把它作为答案,而是对你的问题进行编辑。因为你的问题是“这里发生了什么?”,而不是“我怎样才能去掉这些小数”