Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中计算有效税率?_Javascript_Math - Fatal编程技术网

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

如何在Javascript中计算有效税率?,javascript,math,Javascript,Math,我现在有一系列的时间间隔,可以用来告诉我工资的税率是多少 let tree = new IntervalTree(); // 2020 Federal Income Tax Brackets for Single let singleIntervals = [ [0, 9875], [9876, 40125], [40126, 85525], [85526, 163300], [163301, 207350], [207351, 51

我现在有一系列的时间间隔,可以用来告诉我工资的税率是多少

  let tree = new IntervalTree();

  // 2020 Federal Income Tax Brackets for Single
  let singleIntervals = [
    [0, 9875],
    [9876, 40125],
    [40126, 85525],
    [85526, 163300],
    [163301, 207350],
    [207351, 518400],
    [518401, 900000000],
  ];

  tree.insert(singleIntervals[0], 10);
  tree.insert(singleIntervals[1], 12);
  tree.insert(singleIntervals[2], 22);
  tree.insert(singleIntervals[3], 24);
  tree.insert(singleIntervals[4], 32);
  tree.insert(singleIntervals[5], 35);
  tree.insert(singleIntervals[6], 37);
所以我可以使用这个
let values_in_range=tree.search([10000,10000])
获取工资为10000美元的人的税率,即
%12
。但是我发现联邦所得税的运作方式是你被分块征税

如果我有50000美元的薪水,那么“第一笔9875美元要付10%,收入9876至40125美元要付12%。然后你将支付其余的22%,因为你5万美元的应税收入中有一部分属于22%的税率范围。账单总额约为6800美元——约占应税收入的14%,即使你在22%的范围内。这14%称为你的有效税率。”


最好的方法是什么?

如下所示

const收入=50000;
总税收=0;
如果(收入<9875){
税收总额+=收入*0.1;
}
否则{
税收总额+=9875*0.1;
如果(收入<40125){
税收总额+=(收入-9875)*0.12;
}
否则{
税收总额+=(40125-9875)*0.12;
//等等
}
}
编辑:动态解决方案
我更改了Interval数组以使其更简单:第一个元素是前一个的上限,第三个元素是税率。
产出6790

const singleinterval=[
[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],
];
康斯特收入=50000;
总税收=0;
for(单个间隔的常量间隔){
if(收入<区间[1]){
税收总额+=(收入-区间[0])*区间[2];
打破
}
否则{
totalTaxes+=(区间[1]-区间[0])*区间[2];
}
}
console.log(totalTaxes);

你的解决方案不是动态的;也就是说,因为它不使用问题中的区间数组,如果你的收入高于第三个括号,那么你需要直接在每个区间中编码,这比理想的要低得多。我还添加了一个动态解决方案。另外,动态解决方案工作得很完美。唯一的问题是,它对游戏代码有效.io但当我在项目中的函数中运行它时,它返回NaN。知道为什么吗?我编辑了
singleinterval
数组,您是否更改了项目中的数组?