添加整数和小数的Javascript

添加整数和小数的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; } 上面的代码成功地添加了所有数字,但如果用户输入小数,则不会添加小数 例如: 数组中当前的值如下,

我有一个功能,用户可以输入数字,如“5”、“10”、“0.47”、“0.5”等。 每次用户输入数据时,数据都保存在一个数组中

我使用以下代码将数组中的所有数字相加:

    $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,已更新。我找不到这方面的参考资料,所以我刚刚删除了评论。