Javascript array.reduce的结果不正确

Javascript array.reduce的结果不正确,javascript,arrays,Javascript,Arrays,鉴于: 让行=[ {金额:190615.83}, {金额:-175867.95}, {金额:-14747.88}, ] const sum=rows.reduce((runSum,v)=>runSum+v.Amount,0); 控制台日志(总和)您看到的行为与array.reduce()无关。如果单独添加这些数字,您将看到类似的输出。这就是大多数编程语言中浮点数的行为方式 请参阅下面的代码片段。一般预期这两个日志控制台日志0.0: console.log(190615.83-175867.9

鉴于:

让行=[
{金额:190615.83},
{金额:-175867.95},
{金额:-14747.88},
]
const sum=rows.reduce((runSum,v)=>runSum+v.Amount,0);

控制台日志(总和)
您看到的行为与
array.reduce()
无关。如果单独添加这些数字,您将看到类似的输出。这就是大多数编程语言中浮点数的行为方式

请参阅下面的代码片段。一般预期这两个日志控制台日志
0.0

console.log(190615.83-175867.95-14747.88);

控制台日志(1.1+2.2-3.3)这就是浮点数的行为,如果您知道精度,您可以修复它,在本例中,它是
2

让行=[
{金额:190615.83},
{金额:-175867.95},
{金额:-14747.88},
]
const sum=rows.map(a=>parseFloat(a.Amount)).reduce((runSum,v)=>(parseFloat(runSum)+parseFloat(v)).toFixed(2));
控制台日志(总和)