var quantity = $(this).find('td:eq(2) input').val()*1;
var unitprice = $(this).find('td:eq(3) input').val()*1;
var totaltax = 0;
$(this).find('td:eq(4) input[name^=taxamount]').each(function(){
totaltax = (totaltax*1)+($(this).val()*1);
});
var subtotal = (unitprice+totaltax);
alert(subtotal+' is unit subtotal, to mulitply by '+quantity);
var total = subtotal*quantity;
$(this).find('td:last').html('$'+total);
В этом случае, основываясь на моем DOM, все результаты являются целыми числами (особенно потому, что я проверяю, что я применяю модификатор * 1 к значениям, чтобы они были числами, а не строками).
В этом случае это значения, возвращаемые в первых 7 строках вышеуказанного кода (и проверяются с помощью команды alert)
количество: 10
цена: 29
общий налог: 3,48
промежуточный итог = 32,48
Когда я умножаю итоговое * количество на общую переменную, итоговая сумма возвращается:
всего: 324,79999999999995
Итак, в конце я получаю td: last, заполненное $ 324.79999999999995, а не $ 324.80, что было бы более правильным.
Странно, я знаю. Я пробовал всевозможные предупреждения в разных точках, чтобы убедиться в отсутствии ошибок и т. Д.