2017-06-15 93 views
0

我有一个对象数组,我需要注入一些对象的总和。 所以我有这样的:数组值总和错误计算?

var details=[{month: 1,equips:32.1, instals:12.6, softs: 6.7, manuts:6.2, formacs: 9.7, total:0.0}] 

的,如果我总结的所有值结果放在“全面”我得到一个陌生的号码(67.30000000000001)...

我计算“总”像这样:

var i,nLines=details.length; 
for(i=0;i<nLines;i++){ 
    details[i].total=(details[i].equips)+(details[i].instals)+(details[i].softs)+(details[i].manuts)+(details[i].formacs); 
       } 

,由于某种原因,某些行(我的阵列有更多行)我的结果有一些奇怪的小数...就像我提到的一个...

已经尝试parseFloat但我得到相同的奇怪结果...如果我使用.toFixed(1)我得到“不是一个函数”

+2

[?是浮点运算破(的可能的复制https://stackoverflow.com/questions/588004/is-floating-point-math-broken ) –

+0

您提供的代码不起作用。你的'details'数组应该以']'而不是'}结尾,你的循环遍历一个名为'detalhes'的变量?我确定这是一个错字,但如果您编辑它以使其可以运行,那可能会有所帮助。 – pacifier21

+0

对不起,这是一个错字,忘了翻译循环变量 –

回答

0

在JavaScript中使用数学运算与浮点值可能会有一些问题。 所以,你可以简单地包裹你的结果到功能:

function roundFloat(number) { 
    return parseFloat((number).toPrecision(10)) 
} 

roundFloat(67.30000000000001); // 67.3