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 строках приведенного выше кода (и проверенные с помощью команды оповещения).
Когда я умножаю промежуточный итог*количество на итоговую переменную, общий результат: всего: 324,79999999999995
Итак, в конце я получаю td:last, заполненный на 324,79999999999995 долларов, а не на 324,80 долларов, что было бы более правильным.
Странно, я знаю. Я пробовал всевозможные предупреждения в разных точках, чтобы убедиться, что не было ошибок и т. Д.
32.48 * 10
. - person Anurag   schedule 10.08.2011