2015-02-05 437 views
2

我想给.qty场四舍五入到最接近的整数。我真的不确定把它放在下面的代码片段中?我认为我应该使用Math.ceil()?jQuery的四舍五入到最接近的整数

function(){ 
    var sm = parseFloat($(this).val()); 
    var tsm = parseFloat($('.tsm', $(this).parent().parent()).val()); 
    var calc = (sm*tsm); // total tiles needed 

    if($('.addwaste', $(this).parent().parent()).is(':checked')){ 
     var onepercent = calc/100; 
     var sevenpercent = Math.ceil(onepercent*7); 
     calc+=sevenpercent; 
    } 

    $('.qty', $(this).parent().parent()).val(calc); 
    $('div.product form.cart .qty').val(calc); 

    var rawprice = parseFloat($('.rawprice', $(this).parent().parent()).val()); 
    var total = (rawprice*calc).toFixed(2); 

    $('.total', $(this).parent().parent()).html(total); 
    $('div.product .price .amount').html('£' + total);  
} 

回答

11

这可以通过使用基本的JavaScript来实现:要么 使用:

Math.floor(number here); <- this rounds it DOWN so 4.6 becomes 4 
Math.round(number here); <- this rounds it UP so 4.6 becomes 5 

其无论是地板,圆形或地板和圆。

使你的代码将是:

function(){ 
var sm = parseFloat($(this).val()); 
var tsm = parseFloat($('.tsm', $(this).parent().parent()).val()); 
var calc = (sm*tsm); // total tiles needed 

if($('.addwaste', $(this).parent().parent()).is(':checked')){ 
    var onepercent = calc/100; 
    var sevenpercent = Math.ceil(onepercent*7); 
    calc+=sevenpercent; 
} 

calc = Math.round(calc); 

$('.qty', $(this).parent().parent()).val(calc); 
$('div.product form.cart .qty').val(calc); 

var rawprice = parseFloat($('.rawprice', $(this).parent().parent()).val()); 
var total = (rawprice*calc).toFixed(2); 

$('.total', $(this).parent().parent()).html(total); 
$('div.product .price .amount').html('£' + total);  
} 
+0

我可以把一个变量这个函数里面?谢谢。 – 2015-02-05 18:40:42

+3

鉴于问题是'四舍五入',您可能想使用'Math.ceil()'而不是'Math.floor()'? @ ru-pearls,只要该变量是或保持一个数字,那么是的。 – 2015-02-05 18:40:57

+1

我已经编辑了你的例子里面的帖子,我相信calc需要被四舍五入,所以我用 – 2015-02-05 18:41:21