我似乎找不到在我的代码中有两个小数位的正确公式。现在,当我点击关于计算的第一个选项时,它会四舍五入到小数点后三位(不是3个小数位意味着什么。但不管结果如何,它应该舍入到2个小数位)。这是我的最后一次尝试:
$('#a_is_valid').one('click', function(){
if ($('#code_promo').val() == 'promocode')
{$('#gtotal').val($('#gtotal').val()-($('#gtotal').val()-
(($('#gtotal').val()*.75)))).fixed(2);
}
})
答案 0 :(得分: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。
请参阅:
Decimal rounding
示例复制到您的代码中(在您第一次使用它之前),则可以使用Math.round10($('#gtotal').val() * .75, -2);
。请参阅http://jsfiddle.net/aW44n/1/