Javascript 浮点和整数之和返回不寻常的小数点

Javascript 浮点和整数之和返回不寻常的小数点,javascript,arrays,floating-point,integer,Javascript,Arrays,Floating Point,Integer,我已经为我的某个项目编写了一个代码,我在其中添加了几个数字。在这个过程中,我从数组中添加整数和浮点数。在数组的最后一个元素之前,总和具有适当的小数位数。但是在最后一个元素,总和突然给了我很多小数位。加在上一个总和上的数字和总和本身的小数位数小于3位,但最终总和的小数位数大于3位。这是密码。是JS的 function checkCashRegister(price, cash, cid) { var change = 0, cidSum = 0; change = cash - price

我已经为我的某个项目编写了一个代码,我在其中添加了几个数字。在这个过程中,我从数组中添加整数和浮点数。在数组的最后一个元素之前,总和具有适当的小数位数。但是在最后一个元素,总和突然给了我很多小数位。加在上一个总和上的数字和总和本身的小数位数小于3位,但最终总和的小数位数大于3位。这是密码。是JS的

function checkCashRegister(price, cash, cid) {
  var change = 0, cidSum = 0;
  change = cash - price;
  console.log(change);
  console.log(cid.length);
  for ( var i = 0; i < cid.length; i++ ){
    console.log("number " + cid[i][1]);
    cidSum += cid[i][1];
    console.log("sum " + cidSum);
  }
  console.log(cidSum);
  // Here is your change, ma'am.
  return change;
}

// Example cash-in-drawer array:
// [["PENNY", 1.01],
// ["NICKEL", 2.05],
// ["DIME", 3.10],
// ["QUARTER", 4.25],
// ["ONE", 90.00],
// ["FIVE", 55.00],
// ["TEN", 20.00],
// ["TWENTY", 60.00],
// ["ONE HUNDRED", 100.00]]

checkCashRegister(19.50, 20.00, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.10], ["QUARTER", 4.25], ["ONE", 90.00], ["FIVE", 55.00], ["TEN", 20.00], ["TWENTY", 60.00], ["ONE HUNDRED", 100.00]]);
如你所见,235.41和100之和等于335.4099999。。。 我知道我可以用toFixed函数把它舍入。然而,我想知道为什么会这样

如果我的英语不好,或者我问了一个愚蠢的问题,请原谅,我是来自第三世界国家的初学者,只是想学习。

设x=0.1+0.2;//0.30000000000000004
x=parseFloat(x.toFixed(2));//位数,四舍五入。
console.log(x);//0.3
设x=0.1+0.2;//0.30000000000000004
x=parseFloat(x.toFixed(2));//位数,四舍五入。

console.log(x);//0.3
尝试在JSFIDLE中抛出这类问题:)这是从基2到基10的转换尝试在JSFIDLE中抛出这类问题:)这是从基2到基10的转换
0.5
9
number 1.01
sum 1.01
number 2.05
sum 3.0599999999999996
number 3.1
sum 6.16
number 4.25
sum 10.41
number 90
sum 100.41
number 55
sum 155.41
number 20
sum 175.41
number 60
sum 235.41
number 100
sum 335.40999999999997
335.40999999999997