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));
控制台日志(总和)代码>