这篇文章讲述的是算法初级部分的算法数学问题计算个人所得税问题的java实现,参考的书籍为清华大学出版社出版,贾蓓等编著的《c语言趣味编程1000例》,如有错误或者不当之处,还望各位大神批评指正。
问题描述
- 编写一个程序计算个人所得税,要求输入金额后能够输出应缴的个人所得税,个人所得税计算办法如下:
起征点为1500
不超过1500元的部分,征收3%
超过1500~4500元的部分,征收10%
超过4500~9000元的部分,征收20%
超过9000~35000元的部分,征收25%
超过35000~55000元的部分,征收30%
超过55000~80000元的部分,征收35%
超过80000元以上的部分,征收45%
算法分析
分别计算超过的部分乘及对应分段的税率然后累加起来,如一个人的工资为5500,在分段4500~9000的部分(5500-4500)*0.2,同时还要加上前一个分段的税钱1500*0.03。需使用if-else来判断工资在哪个范围,再对应计算。
代码实现
public class Q1_SalaryTax {
/**
* 问题描述:编写一个程序计算个人所得税,要求输入金额后能够输出应缴的个人所
* 得税,个人所得税计算办法如下:
* - 起征点为1500
* - 不超过1500元的部分,征收3%
* - 超过1500~4500元的部分,征收10%
* - 超过4500~9000元的部分,征收20%
* - 超过9000~35000元的部分,征收25%
* - 超过35000~55000元的部分,征收30%
* - 超过55000~80000元的部分,征收35%
* - 超过80000元以上的部分,征收45%
*
* 算法分析:超过的部分乘及对应的税率然后累加起来,
* 如一个人的工资为5500,在分段4500~9000的部分(5500-4500)*0.2,
* 同时还要加上前一个分段的税钱1500*0.03。
* 需使用if-else来判断工资在哪个范围,再对应计算。
*/
public static void main(String[] args) {
double salary = 100000 ; //输入工资
double taxsal = salary-3500.0 ; //计算起证部分
double culsal=0 ; //定义一个变量用于保存计算结果
if(taxsal <= 0){ //若工资不超过3500
culsal = 0 ;
}else if(taxsal <= 1500){ //超过部分小于1500
culsal = (taxsal-0)*0.03f ;
}else if(taxsal>1500 && taxsal<04500){ //超过1500~4500
culsal = (taxsal-1500)*0.10f
+ (1500-0)*0.03f ;
}else if(taxsal>=4500 && taxsal<9000){ //超过4500~9000
culsal = (taxsal-4500.0)*0.20f
+ (4500-1500)*0.10f
+ (1500-0)*0.03f ;
}else if(taxsal>=9000 && taxsal<35000){ //超过9000~35000
culsal = (taxsal-9000.0)*0.25f
+ (9000-4500)*0.20f
+ (4500-1500)*0.10f
+ (1500-0)*0.03f ;
}else if(taxsal>=35000 && taxsal<55000){ //超过35000~55000
culsal = (taxsal-35000.0)*0.30f
+ (35000-9000)*0.25f
+ (9000-4500)*0.20f
+ (4500-1500)*0.10f
+ (1500-0)*0.03f ;
}else if(taxsal>=55000 && taxsal<80000){ //超过55000~80000
culsal = (taxsal-55000.0)*0.35f
+ (55000-35000)*0.30f
+ (35000-9000)*0.25f
+ (9000-4500)*0.20f
+ (4500-1500)*0.10f
+ (1500-0)*0.03f ;
}else if(taxsal>=80000){ //超过80000以上
culsal = (taxsal-80000.0)*0.45f
+ (80000-55000)*0.35f
+ (55000-35000)*0.30f
+ (35000-9000)*0.25f
+ (9000-4500)*0.20f
+ (4500-1500)*0.10f
+ (1500-0)*0.03f ;
}
System.out.println("工资为:"+salary+" 应缴所得税:"+culsal);
}
}
样例输出
工资为:100000.0 应缴所得税:29919.999803304672