適用於深圳的個人所得稅。中間還用100做步長遍歷打印出個人所得稅,在excel中可以處理。
public class SZTax {
/**
* 返回扣除社保醫保公積金後薪水
* @param salaryBeforeTax 扣除社保醫保公積金前薪水
* @return
*/
public int salaryAfterTax(int salaryBeforeTax)
{
// (3W-3.5K)*25%-1005
// 扣稅公式是:
// (扣除社保醫保公積金後薪水-個稅起徵點)*稅率-速算扣除數
int taxbase=salaryBeforeTax-3500;
int Taxrate=0;//這裏稅率沒有除以百分比;
int Quickdeduction=0;
if(taxbase <=0)//低於個稅起徵點
{
return salaryBeforeTax;
}else if(taxbase <=1500)
{
Taxrate=3;
Quickdeduction=0;
}else if(taxbase <=4500)
{
Taxrate=10;
Quickdeduction=105;
}else if(taxbase <=9000)
{
Taxrate=20;
Quickdeduction=555;
}else if(taxbase <=35000)
{
Taxrate=25;
Quickdeduction=1005;
}else if(taxbase <=55000)
{
Taxrate=30;
Quickdeduction=2755;
}else if(taxbase <=80000)
{
Taxrate=35;
Quickdeduction=5505;
}else
{
Taxrate=45;
Quickdeduction=13505;
}
return salaryBeforeTax-((salaryBeforeTax-3500)*Taxrate/100-Quickdeduction);
}
public void costeffectivesalary(int salaryBeforeTax)
{
//從1萬算起,100的步長算到10萬,找出稅後稅前比最大的。
for (;salaryBeforeTax <= 100000; salaryBeforeTax=salaryBeforeTax+100) {
float rate=(float)salaryAfterTax(salaryBeforeTax)/salaryBeforeTax*100000;
System.out.println(""+salaryBeforeTax+"-----------"+salaryAfterTax(salaryBeforeTax)+"-----------"+rate);
}
}
public static void main(String[] args)
{
new SZTax().costeffectivesalary(10000);
}
}