如何计算jQuery中的税率?

时间:2016-03-10 15:47:08

标签: javascript

这是我第一次在这里提问,所以我希望我能正确地做到这一点。

为了给出背景,我正在开发一个小型网站,律师可以购买一些法律文件的数字版本,但我在计算总费用税时遇到了麻烦。

税收按加拿大魁北克省的两种税率计算:商品及服务税(5%)和商品及服务税(9.975%)。两种费率均使用小计金额计算。这是我到目前为止所尝试的:

$("#formchoix #checkall").click(function () {
        var tps = 0.05; //5%
        var tvq = 0.09975; //9.975%
        var subtotal = 0;
        var total = 0;
        if ($("#formchoix #checkall").is(':checked')) {
            $("#formchoix input[type=checkbox].checkchoix").each(function () {
                //check all forms
                $(this).prop("checked", true);
                $(".checknom").prop("checked", true);
                $(".checkid").prop("checked", true);

                subtotal += 15; //each form is 15$

                $('#subtotal').html(subtotal + '.00$'); //subtotal shown to user

                var taxes = subtotal * tps * tvq;
                total = subtotal + taxes;
                $('#totalcost').html(total.toFixed(2) + '$'); //total shown to user
                $('#inputTotal').val(total.toFixed(2)); //value to be sent to server
            });

        } else {
            $("#formchoix input[type=checkbox]").each(function () {
                //reset everything: checkboxes, value and total shown to user
                $(this).prop("checked", false);
                $(".checknom").prop("checked", false);
                $(".checkid").prop("checked", false);

                subtotal = 0;
                total = 0;
                $('#subtotal').html('0.00$');
                $('#totalcost').html('0.00$');
                $('#inputTotal').val('0.00');
            });
        }
    });

上面的代码并没有给我正确的数字。例如,如果我的小计是30美元,它将显示30.15美元而不是30.49美元,就像它应该的那样(基于在线税收计算器)。

我也尝试使用像1.05和1.09975这样的值,然后使用total = subtotal * tps * tvq将它们直接乘以小计,但是总数给了我30.64 $(如果小计是30美元,就像我之前的例子一样)

显然我所做的是错的,那么我怎样才能确保总数是对的呢?

1 个答案:

答案 0 :(得分:0)

30 * 0.05 * 0.09975 = 0.149625,通过调用toFixed(2)四舍五入为0.15。数学并不谎言。正如其他人所说,你要征税。

var taxes = subtotal * tps * tvq;
total = subtotal + taxes;

应改为

total = subtotal + subtotal * tps + subtotal * tvq;

total = subtotal * (1 + tps + tvq);