Javascript under-the-hood toString转换

Dim*_*bag 2 javascript string floating-point addition

我有以下功能:

function addChange(result, bill) {
  for (var i=0;i<result.length;i++) {
    if (result[i][0] === bill[0]) {
      result[i][1] = parseFloat(result[i][1]).toPrecision(2) + parseFloat(bill[1]).toPrecision(2);
      return result;
    }
  }
  result.push(bill);
  return result;
}
Run Code Online (Sandbox Code Playgroud)

这被称为以下,例如:

result = [["QUARTER", 0.25],["DIME", 0.10]];
bill = ["QUARTER", 0.25];
addChange(result, bill);
Run Code Online (Sandbox Code Playgroud)

上面的输出是:

[["QUARTER", "0.250.25"], ["DIME", 0.10]] 
Run Code Online (Sandbox Code Playgroud)

为什么javascript会在添加之前将这些浮点数转换为字符串?或者还有其他事情发生了吗?如何移动它并实现我想要的,即,对于上面的例子:

[["QUARTER", 0.50], ["DIME", 0.10]]
Run Code Online (Sandbox Code Playgroud)

Mat*_*nde 5

问题是:

floatNumber.toPrecision(2)
Run Code Online (Sandbox Code Playgroud)

这会从您的号码创建一个字符串.该toPrecision功能全被用来创建一个表示你的电话号码与固定位数.