【发布时间】:2015-06-29 12:24:57
【问题描述】:
我有以下功能:
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]]
【问题讨论】:
-
使用
Math.round(parsedFloat*100)/100 -
@Shashank 你将如何强制 javascript 准确处理任何 2 个小数精度浮点数?
-
我会使用在使用
toFixed/toPrecision后跟数字类型转换和Math.round乘法和除法之间更快的方法。我还没有测试过性能,所以我不确定哪种方法会更好。
标签: javascript string floating-point addition