我有一些带有 .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?非常奇怪的行为。
答案 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转换为字符串,因此只有在计算完成后才能使用它。