javascript jquery .each()问题

时间:2010-11-24 10:22:36

标签: javascript jquery

我有一些带有 .commission_plan 类和不同ID的表单输入元素。我需要总结一下这个元素的价值。我使用这段代码:

jQuery(document).ready(function() {
    var total = 0;
    $('.commission_plan').each(function() {
        total = total + parseFloat($(this).val());
    });
    $('#payment_total_amount_hidden').val(total);
    $('#payment_total_amount').text('Total: ' + total);
}):

在我的输入字段中,值为3.45和4.65。但为什么 #payment_total_amount 包含8.100000000000001?非常奇怪的行为。

2 个答案:

答案 0 :(得分:4)

这就是浮点数运算的行为方式,对于通常需要2个小数位的货币情况,所以在渲染时使用.toFixed(2),如下所示:

var total = 0;
    $('.commission_plan').each(function(){
        total = total + parseFloat($(this).val());
    });
    $('#payment_total_amount_hidden').val(total.toFixed(2));
    $('#payment_total_amount').text('Total: '+total.toFixed(2));
}):

答案 1 :(得分:2)

这是浮点值精度问题的结果。您可以尝试使用toFixed(n)javascript方法来限制小数位数。

编辑:正如Nick在评论中所阐明的那样,toFixed(n)方法会将float转换为字符串,因此只有在计算完成后才能使用它。