JavaScript打印的数字有20位小数



所以这是我的代码:

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!");
}

最新更新