2013-03-02 75 views
1

这个函数是通过动态表计算借方总数,问题是,它计数为2.6 + 2.1 = 4.00,我想要的答案是4.70,但它并不指望两个小数。如何修复计算总共两位小数的误差

function debitvalues() { 
    var debittotal = 0; 
    var obj = document.getElementsByTagName("input"); 
    for (var i = 0; i < obj.length; i++) { 
     if (obj[i].name == "debit[]") { 
      if (obj[i].value > 0) { 
       debittotal += parseInt(obj[i].value * 1); 
      } else { 
       obj[i].value = 0; 
       debittotal += parseInt(obj[i].value * 1); 
      } 
     } 
    } 
    document.getElementById("debittotal").value = (debittotal * 1).toFixed(2); 
    debittotal = 0; 
} 

回答

5

您解析到int,而你需要解析到float

parseInt(obj[i].value*1) 

parseInt =>parseFloat

parseInt给你一个自然的号 - ňparseFloat给你一个真实的编号为R

顺便说一句,当你多一条数字X一个您得到相同的X号,所以我觉得你的计算器可以跳过它...

parseInt(obj[i].value*1) => parseFloat(obj[i].value)