引擎盖下的Javascript到字符串转换

引擎盖下的Javascript到字符串转换,javascript,string,floating-point,addition,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; } }

我有以下功能:

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;
}
上面的输出是:

[["QUARTER", "0.250.25"], ["DIME", 0.10]] 
为什么javascript在进行加法之前会将这些浮点数转换为字符串?还是有别的事情发生了?我如何超越它并实现我想要的,例如,对于上述示例:

[["QUARTER", 0.50], ["DIME", 0.10]]

来自mdn文档

返回

以定点或指数表示法表示数字对象的字符串,四舍五入为精确有效数字。请参阅Number.prototype.toFixed()方法描述中关于舍入的讨论,该方法也适用于toPrecision()。

问题是:

floatNumber.toPrecision(2)

这将根据您的号码创建一个字符串。
toPrecision
-函数用于创建数字的固定位数表示形式。

使用
Math.round(parsedFloat*100)/100
@Shashank这就是你如何强迫javascript精确处理任何2位十进制精度的浮点数的方法吗?我会使用
toFixed
/
toPrecision
然后是cast to number类型和
Math.round
与乘法和除法之间速度更快的方法。我还没有测试性能,所以我不确定哪种方法更好。
floatNumber.toPrecision(2)