javascript jquery.each()问题
我有一些带有class.commission\u计划和不同ID的表单输入元素。我需要总结这个元素的值。我使用以下代码:javascript jquery.each()问题,javascript,jquery,Javascript,Jquery,我有一些带有class.commission\u计划和不同ID的表单输入元素。我需要总结这个元素的值。我使用以下代码: jQuery(document).ready(function() { var total = 0; $('.commission_plan').each(function() { total = total + parseFloat($(this).val()); }); $('#payment_total_amount_hid
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。但为什么#付款总额#包含8.1000000000001?非常奇怪的行为。这是浮点值精度问题的结果。您可以尝试使用toFixed(n)javascript方法来限制小数位数
编辑:正如Nick在评论中阐明的,toFixed(n)方法将浮点转换为字符串,因此只有在计算完成后才应使用它。这是浮点值精度问题的结果。您可以尝试使用toFixed(n)javascript方法来限制小数位数
编辑:正如Nick在评论中阐明的,toFixed(n)方法将浮点转换为字符串,因此只有在计算完成后才应使用它。这就是浮点数学的行为方式,对于货币情况,您通常需要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));
}):
这就是浮点数学的行为方式,对于经常需要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));
}):
这不是使用它的地方,因为结果是一个字符串。@Nick-你能澄清一下为什么不能在这里使用它吗;我已经测试了结果,它看起来像预期的那样工作?您将向字符串添加数字,第二个循环将是一个没有
.toFixed()
方法的字符串,因此它会爆炸。你可以在这里测试:@Nick-谢谢,我没有意识到toFixed方法将类型更改为字符串。我已经适当地编辑了我的答案。这不是使用它的地方,因为结果是一个字符串。@Nick-你能澄清一下为什么不能在这里使用它吗;我已经测试了结果,它看起来像预期的那样工作?您将向字符串添加数字,第二个循环将是一个没有.toFixed()
方法的字符串,因此它会爆炸。你可以在这里测试:@Nick-谢谢,我没有意识到toFixed方法将类型更改为字符串。我已适当地编辑了我的答案。请尝试使用映射。和get方法。@steven-.map()
返回一个数组,在这里它真的不合适,因为我们在循环的末尾寻找一个值。请尝试使用映射。和get方法。@steven-.map()
返回一个数组,在这里它真的不合适,因为我们在循环的末尾寻找一个值。