以下是jQuery代码
$('#Cancelation').change(function(){
if($(this).is(':checked')){
total = parseFloat($('#TotalAmount').val()) + parseFloat($('#Cancelation').val());
} else {
total = parseFloat($('#TotalAmount').val()) - parseFloat($('#Cancelation').val());
}
$('#TotalAmount').val(total);
$('#TotalPrice').html(total);
});
如果#TotalAmount
值为10.49且在页面加载时显示正确,则问题是如果选中或取消选中复选框,则复选框的值为2.00,或者从#TotalAmount
和#TotalPrice
减去但输出在减去0 12.48999998
时显示为10.48999998
。
我试过了.toFixed(2);
,但结果是一样的,还有其他方法可以解决这个问题吗?
已编辑:HTML代码
<label for="Cancelation"><input type="checkbox" name="Cancelation" id="Cancelation" value="2.00"> Cancellation Protection: 2.00</label>
<input type="text" name="TotalAmount" id="TotalAmount" value="10.49" />
Total Amount: <span id="TotalPrice">10.49</span>
答案 0 :(得分:3)
您可以使用Math.round(number * 100) / 100
舍入到小数点后两位。
答案 1 :(得分:3)
经过一些研究并在以下链接中查看答案
Round to at most 2 decimal places in JavaScript
通过添加java对问题进行排序,感谢 mac 谁建议Math.round
。
<script>
var round = Math.round;
Math.round = function (value, decimals) {
decimals = decimals || 0;
return Number(round(value + 'e' + decimals) + 'e-' + decimals);
}
$('#Cancelation').change(function(){
if($(this).is(':checked')){
total = parseFloat($('#TotalAmount').val()) + parseFloat($('#Cancelation').val());
} else {
total = parseFloat($('#TotalAmount').val()) - parseFloat($('#Cancelation').val());
}
$("#TotalAmount").val(Math.round(total, 2));
$("#TotalPrice").html(Math.round(total, 2));
});
</script>