这是我第一次在这里提问,所以我希望我能正确地做到这一点。
为了给出背景,我正在开发一个小型网站,律师可以购买一些法律文件的数字版本,但我在计算总费用税时遇到了麻烦。
税收按加拿大魁北克省的两种税率计算:商品及服务税(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美元,就像我之前的例子一样)
显然我所做的是错的,那么我怎样才能确保总数是对的呢?
答案 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);