0

我正在使用以下 Jquery 脚本实时计算发票上的总计,问题是我似乎无法将小计四舍五入到小数点后 2 位。

如果我添加该行:

 subtotal= (subtotal).toFixed(2);

subtotal += parseFloat(rawValue);

或试试这个:

subtotal += parseFloat(rawValue).toFixed(2);

它似乎只是破坏了脚本,然后我什么也没有得到。我已经设法将增值税和总计四舍五入,但由于某种原因我无法得到小计?:-S 。

           <script type="text/javascript">
           $(document).ready(function () {
              // Calculate sub total
              $('input').on('keyup', function () {
            var rawValue, subtotal = 0;
    $('span[id^="linetotal"]').each(function(i, elem){
         rawValue = $.trim($(this).text());
         if(rawValue == '') rawValue = 0;
         discount = $('#discount').val();
         subtotal += parseFloat(rawValue);
    });
    $('#subtotal').text(subtotal - discount);
    $('#subtotalT').val(subtotal - discount);

    // Calculate vat amount       
        var vatrate = '<?php echo($vatrate);?>';
        subtotal =  $('#subtotal').text(),
               totalprice = parseFloat(subtotal);
                vatamount = (totalprice / 100 * vatrate).toFixed(2);
            $('#vat').text(vatamount);
            $('#vatT').val(vatamount);

    // Calculate grand total
    vatamounttoadd = parseFloat(vatamount);
    subtotaltoadd = parseFloat(subtotal);
    grandtotal = (subtotaltoadd + vatamounttoadd).toFixed(2);
    $('#grandtotal').text(grandtotal);
    $('#grandtotalT').val(grandtotal);

               });  });
           </script>
4

2 回答 2

1

只需将数字乘以 100,然后像往常一样进行四舍五入,即使用roundceilfloor,然后除以 100,这可能是值得的。希望这是有道理的。

我在jsfiddle上做了一个简单的例子,只需点击“运行”。http://jsfiddle.net/rHwVz/2/

function round_that(round_number){
    ceil_number = Math.ceil(round_number * 100);
    ceil_number = ceil_number / 100;

    floor_number = Math.floor(round_number * 100);
    floor_number = floor_number / 100;

    rounded_number = Math.round(round_number * 100);
    rounded_number = rounded_number / 100;

    // This messy bit just makes a string to append to the document
    return_var = "<b>Number: " + round_number;
    return_var += "</b><br/>Ceil: " + ceil_number;
    return_var += "<br> Floor: " + floor_number + "<br>Round: " + rounded_number

    return return_var;
}
于 2013-07-17T11:32:49.437 回答
0

我最后使用了这个,这似乎完成了这项工作:)

trimsub = (subtotal - discount).toFixed(2);
$('#subtotal').text(trimsub);
$('#subtotalT').val(trimsub);
于 2013-07-17T12:15:40.127 回答