添加整数和小数的Javascript
我有一个功能,用户可以输入数字,如“5”、“10”、“0.47”、“0.5”等。 每次用户输入数据时,数据都保存在一个数组中 我使用以下代码将数组中的所有数字相加:添加整数和小数的Javascript,javascript,arrays,decimal,Javascript,Arrays,Decimal,我有一个功能,用户可以输入数字,如“5”、“10”、“0.47”、“0.5”等。 每次用户输入数据时,数据都保存在一个数组中 我使用以下代码将数组中的所有数字相加: $scope.uTotal = uMiles.reduce(addPrice, 0) function addPrice(a, b) { return a + b; } 上面的代码成功地添加了所有数字,但如果用户输入小数,则不会添加小数 例如: 数组中当前的值如下,
$scope.uTotal = uMiles.reduce(addPrice, 0)
function addPrice(a, b) {
return a + b;
}
上面的代码成功地添加了所有数字,但如果用户输入小数,则不会添加小数
例如:
数组中当前的值如下,这是通过执行控制台.log收集的:
运行上述功能后,屏幕上的输出为:
总计=5
但实际上它应该显示total=6.88
我如何确保无论用户输入的数字是多少,加起来的数字都能准确显示在前面。在函数内部使用,您应该很好:
function addPrice(a, b)
{
return a + parseFloat(b);
}
在
addPrice
函数中,使用运算符+
对值求和
但是有一个问题:uMiles
数组中的值是字符串。然后,+
连接字符串,而不是求和数值
要修复它,必须将字符串转换为数字
- 在
减少之前,使用
:.map(Number)
uMiles.map(Number).reduce(addPrice,0); 功能附加价格(a、b){ 返回a+b; }
- 在
中,使用以下命令:addPrice
uMiles.reduce(addPrice,0); 功能附加价格(a、b){ 返回a++b; }
返回parseFloat(a)+parseFloat(b)
应该能做到。@entropic对前面的评论表示歉意,您的答案是正确的。谢谢。您正在连接字符串。例如,[“5”、“0.47”、“0.47”].reduce((a,b)=>a+b,0)
返回“050.470.47”
。你确定你得到了5
?我有点好奇,为什么你首先将这些值存储为字符串。为什么JS将<1
的字符串解析为0
?对数字的强制在哪里发生?数字在哪里被截断?@Oriol,已更新。我找不到这方面的参考资料,所以我刚刚删除了评论。