如何在 JavaScript 中计算有效税率?

Cod*_*ord 3 javascript math

我目前有一系列间隔,可以用来告诉我该工资的税率是多少。

\n
let tree = new IntervalTree();\n\n// 2020 Federal Income Tax Brackets for Single\nlet singleIntervals = [\n  [0, 9875],\n  [9876, 40125],\n  [40126, 85525],\n  [85526, 163300],\n  [163301, 207350],\n  [207351, 518400],\n  [518401, 900000000],\n];\n\ntree.insert(singleIntervals[0], 10);\ntree.insert(singleIntervals[1], 12);\ntree.insert(singleIntervals[2], 22);\ntree.insert(singleIntervals[3], 24);\ntree.insert(singleIntervals[4], 32);\ntree.insert(singleIntervals[5], 35);\ntree.insert(singleIntervals[6], 37);\n
Run Code Online (Sandbox Code Playgroud)\n

所以我可以用它let values_in_range = tree.search([10000, 10000]);来获取年薪为 10,000 美元的人的税率,即12%。但我发现联邦所得税的运作方式是分批征税。

\n

例子

\n

因此,如果我的工资为 50,000 美元,那么“您\xe2\x80\x99d 为前 9,875 美元支付 10%,为 9,876 美元到 40,125 美元之间的收入部分支付 12%。然后,您\xe2\x80\x99d 支付 22%其余的,因为您的 50,000 美元应税收入中的一部分属于 22% 税级。总账单约为 6,800 美元 \xe2\x80\x94 约占您应税收入的 14%,即使您\xe2\x80\x99 处于22% 的税率。这 14% 称为有效税率。”

\n

做这个的最好方式是什么?

\n

Jan*_*ier 8

像下面这样的东西

const income = 50000;

let totalTaxes = 0;

if (income < 9875) {
  totalTaxes += income * 0.1;
}
else {
  totalTaxes += 9875 * 0.1;
  if (income < 40125) {
    totalTaxes += (income - 9875) * 0.12;
  }
  else {
    totalTaxes += (40125 - 9875) * 0.12;
    //et cetera
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑:动态解决方案
我更改了间隔数组以使其更简单:第一个元素是前一个元素的上限,第三个元素是税率。
输出 6790

const singleIntervals = [
  [0, 9875, 0.1],
  [9875, 40125, 0.12],
  [40125, 85525, 0.22],
  [85525, 163300, 0.24],
  [163300, 207350, 0.32],
  [207350, 518400, 0.35],
  [518400, 900000000, 0.37],
];

const income = 50000;

let totalTaxes = 0;
for (const interval of singleIntervals) {
  if (income < interval[1]) {
    totalTaxes += (income - interval[0]) * interval[2];
    break;
  }
  else {
    totalTaxes += (interval[1] - interval[0]) * interval[2];
  }
}

console.log(totalTaxes);
Run Code Online (Sandbox Code Playgroud)