JavaScript打印错误的数字,大约20位小数
这是我的代码:JavaScript打印错误的数字,大约20位小数,javascript,html,Javascript,Html,这是我的代码: requestList.push(newDrink("Beer 1", 1.2, "Quantity:33cl", 0, "Beer")); “1.2”是价格。还有另一个变量,用1初始化,它是“数量” 所以,非常简单,当我添加更多数量时,我会打印它,所以在这种情况下,输出应该是这样的 1.2 2.4 3.6 4.8 6 7.2 但我明白了: 1.2 2.4 3.599999999999996 4.8 6 7.199999999999999 我无法理解这一点
requestList.push(newDrink("Beer 1", 1.2, "Quantity:33cl", 0, "Beer"));
“1.2”是价格。还有另一个变量,用1初始化,它是“数量”
所以,非常简单,当我添加更多数量时,我会打印它,所以在这种情况下,输出应该是这样的
1.2
2.4
3.6
4.8
6
7.2
但我明白了:
1.2
2.4
3.599999999999996
4.8
6
7.199999999999999
我无法理解这一点。数量加上
requestList[i].quantity++
所以我的变量就像“double和int”。有什么想法吗?这是浮点运算的问题。Javascript无法处理精确的数字。有关更多详细信息,请参阅。但是,由于您似乎只使用了一位小数,因此可以执行以下操作:
num=Math.round(num*10)/10;
num.toFixed(1);
或者正如iccthedral在评论中指出的,您可以这样做:
num=Math.round(num*10)/10;
num.toFixed(1);
如果不打算这样做,则不应检查两个数字是否等于=
,而应使用以下内容进行检查:
if(Math.abs(num1-num1)<=1e-6){
alert("They are equal!");
}
if(Math.abs(num1-num1)@iccthedral谢谢。我不知道那一个。用了Math.round,谢谢,现在好了。