个人所得税计算
前面学习了不同分支条件下的计算,我们再看一个计算个人所得税的例子,假设个人所得税的规则如下, 看下根据税前工资如何求出税后工资:
- 不超过 1500 元的扣除 3%
- 超过 1500 元至 4500 元的部分扣除 10%
- 超过 4500 元至 9000 元的部分扣除 20%
- 超过 9000 元至 35000 元的部分扣除 25%
- 超过 35000 元的部分扣除 30%
需求分析:
看需求,税费计算也是分成几个区间,有点类似出租车计价规则,所以程序整体结构会有些类似, 会用到多个分支语句。
每个分支里要计算出相应区间的税费,要想求出本区间的税费,先要知道落在本区间内有多少钱, 然后再乘以本区间的税率就可以了,百分比在程序里用浮点数表示,如 10% 用 0.1 表示
最后用税前工资减去各阶段的税费,就能得出税后工资。
根据上面的分析代码编写如下:
var salary = 1800; // 税前工资
var taxSalary = 0; // 税后工资
// 各阶段起始点,不包含该点
var step1Begin = 1500;
var step2Begin = 4500;
var step3Begin = 9000;
var step4Begin = 35000;
// 各阶段税率
var baseRate = 0.03;
var step1Rate = 0.1;
var step2Rate = 0.2;
var step3Rate = 0.25;
var step4Rate = 0.3;
// 各阶段税费
var baseTax = 0;
var step1Tax = 0;
var step2Tax = 0;
var step3Tax = 0;
var step4Tax = 0;
if (salary > step4Begin) {
step4Tax = (salary - step4Begin) * step4Rate;
step3Tax = (step4Begin - step3Begin) * step3Rate;
step2Tax = (step3Begin - step2Begin) * step2Rate;
step1Tax = (step2Begin - step1Begin) * step1Rate;
baseTax = step1Begin * baseRate;
} else if (salary > step3Begin) {
step3Tax = (salary - step3Begin) * step3Rate;
step2Tax = (step3Begin - step2Begin) * step2Rate;
step1Tax = (step2Begin - step1Begin) * step1Rate;
baseTax = step1Begin * baseRate;
} else if (salary > step2Begin) {
step2Tax = (salary - step2Begin) * step2Rate;
step1Tax = (step2Begin - step1Begin) * step1Rate;
baseTax = step1Begin * baseRate;
} else if (salary > step1Begin) {
step1Tax = (salary - step1Begin) * step1Rate;
baseTax = step1Begin * baseRate;
} else {
baseTax = salary * baseRate;
}
taxSalary = salary - baseTax - step1Tax - step2Tax - step3Tax - step4Tax;
console.log(taxSalary);
注意:一定要处理好数据边界,正确使用 >,<= 等关系操作符,不能重复计税,也不能漏掉计税。
当税前工资为 1800, 上面程序运行结果是 1725,看下跟你用纸笔或口算的结果一样吗?
下面再提供几个程序输出感受一下各种级别工资的扣税情况:)
| 税前工资 | 税后工资 |
|---|---|
| 5000 | 4555 |
| 12000 | 10005 |
| 38000 | 29355 |
进入下一页
小测验