所以这是我的代码:
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++
所以我的变量就像"doubles和int"。有什么想法吗?
这是浮点运算的一个问题。Javascript无法处理精确的数字。有关详细信息,请参阅此问题。然而,由于看起来你只使用了一个小数点,你可以这样做:
num=Math.round(num*10)/10;
或者,正如icctedral在评论中指出的那样,你可以这样做:
num.toFixed(1);
如果你不打算这样做,你不应该检查两个数字是否等于==
,而是应该用来检查
if(Math.abs(num1-num1)<=1e-6){
alert("They are equal!");
}