小数点后两位四舍五入-找不到正确的公式

Rounding two decimal places - not finding the right formula

本文关键字:找不到 四舍五入 两位 小数点      更新时间:2023-09-27

我似乎找不到在代码中有两个小数点的正确公式。现在,当我点击关于计算的第一个选项时,它四舍五入到小数点后三位(小数点后3位并不意味着什么。但不管结果如何,它都应该四舍五进到小数点前2位)。这是我最后一次尝试:

$('#a_is_valid').one('click', function(){
    if ($('#code_promo').val() == 'promocode')
        {$('#gtotal').val($('#gtotal').val()-($('#gtotal').val()-        
            (($('#gtotal').val()*.75)))).fixed(2);
    }
})

给定一个数字(或表示数字的字符串),为什么不这样做呢:

var number;
var output = (Math.round(number * 100) / 100).toFixed(2);

在你的情况下,看起来你想要:

$('#a_is_valid').one('click', function(){
     if ($('#code_promo').val() == 'promocode')
        {$('#gtotal').val((Math.round($('#gtotal').val() * 75) / 100).toFixed(2));

Math.round(足够合适)四舍五入到最接近的整数,所以你必须做一些魔术。乘以10^(你想要的小数位数)-在你的情况下,10^2或100,四舍五入,然后除以相同的数字。

在我专门为你做的例子中,你会注意到我乘以75:0.75*100。

使用函数可能最容易看到这一点

function roundToNPlaces(n, val) {
    var multiplier = Math.pow(10, n);
    return (Math.round(val * multiplier) / multiplier).toFixed(n);
}

然后你可以简单地设置你的gtotal如下:

$('#gtotal').val(roundToNPlaces(2, $('gtotal').val() * 0.75));

请参阅此FIDDLE。

参见:

  • Math.round注意:此文档提供了一个类似于(但比)我给出的代码更复杂的实现。如果您将他们的整个Decimal rounding示例复制到您的代码中(在第一次需要使用它之前),那么您可以只使用Math.round10($('#gtotal').val() * .75, -2);。看见http://jsfiddle.net/aW44n/1/
  • toFixed