所以这是我的代码:
requestList.push(newDrink("Beer 1", 1.2, "Quantity:33cl", 0, "Beer"));
“1.2”是价格。还有另一个用1初始化的变量,即“数量”。
function printtolist()
{
var price = requestList[i].price * requestList[i].quantity;
alert(price);
}
所以,非常简单,当我添加更多数量时我会打印它,所以在这种情况下输出应该是这样的。
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++
所以我的变量就像“双打和整数”。有什么想法吗?
答案 0 :(得分:2)
这是浮点运算的问题。 Javascript无法处理确切的数字。有关详细信息,请参阅this question。但是,由于您似乎只使用一个小数位,因此可以执行以下操作:
num=Math.round(num*10)/10;
或者作为评论中指出的iccthedral,你可以这样做:
num.toFixed(1);
如果你不打算这样做,你不应该检查两个数字是否与==
相等,而是你应该用它来检查:
if(Math.abs(num1-num1)<=1e-6){
alert("They are equal!");
}