JavaScript打印错误的数字与20位小数

时间:2013-12-03 23:14:05

标签: javascript html

所以这是我的代码:

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++

所以我的变量就像“双打和整数”。有什么想法吗?

1 个答案:

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