2013-03-02 3 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 дает естественный number- N в то время как parseFloat дает вам реальный номер- R.

Кстати, когда вы мультипликатор number- х одним вы получите то же й число, так что я думаю, что ваш калькулятор может пропустить ...

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