十进制后最多2个尾随数字

时间:2015-07-13 20:36:15

标签: jquery checkbox

以下是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>

2 个答案:

答案 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>