我有以下功能:
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;
}
以下称为:
result = [["QUARTER", 0.25],["DIME", 0.10]];
bill = ["QUARTER", 0.25];
addChange(result, bill);
上面的输出是:
[["QUARTER", "0.250.25"], ["DIME", 0.10]]
为什么javascript会在添加之前将这些浮点数转换为字符串?或者还有其他事情发生了吗?我怎样才能超越它并达到我想要的目标,即上面的例子:
[["QUARTER", 0.50], ["DIME", 0.10]]
答案 0 :(得分:5)
问题是:
floatNumber.toPrecision(2)
这会从您的号码创建一个字符串。 toPrecision
- 函数用于创建具有固定位数的数字的表示。
答案 1 :(得分:4)
来自mdn文档https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Number/toPrecision
返回
以定点或指数表示法表示Number对象的字符串,舍入为精确有效数字。请参阅Number.prototype.toFixed()方法描述中的舍入讨论,该方法也适用于toPrecision()。