Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript打印错误的数字,大约20位小数_Javascript_Html - Fatal编程技术网

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,谢谢,现在好了。