个人所得税计算公式与依据:
应纳个人所得税税额=(应纳税所得-扣除标准)*适用税率-速算扣除数
扣除标准1600元/月。 (2008年3月1日起为2000)
不超过500元的,税率5%,速算扣除数为0;
超过500元至2000元的部分,税率10%,速算扣除数为25
超过2000元至5000元的部分,税率15 %,速算扣除数为125
超过5000元至20000元的部分,税率20 %,速算扣除数为375
超过20000元至40000元的部分,税率25%,速算扣除数为1375
超过40000元至60000元的部分,税率30%,速算扣除数为3375
超过60000元至80000元的部分,税率35%,速算扣除数为6375
超过80000元至100000元的部分,税率40%,速算扣除数为10375
超过100000元的部分,税率45%,速算扣除数为15375
写了一个小程序计算:
首先是一个参数定义类:
package corejava;
public class TaxParameter {
private final double baseRate = 0.05;
private final int levelNum = 9;
private final double amountArray[] = {500,2000,5000,20000,40000,60000,80000,100000} ;
private double freeAmount = 1600;
public double[] getAmountArray() {
return amountArray;
}
public double getBaseRate() {
return baseRate;
}
public double getFreeAmount() {
return freeAmount;
}
public void setFreeAmount(double freeAmount){
this.freeAmount = freeAmount;
}
public int getLevelNum() {
return levelNum;
}
}
操作类:
package corejava;
/**
*
* @author unya
* @version 1.0
* @category 工资收入税收计算
* @see 国家税务总局关于工资薪金所得计算缴纳个人所得税政策衔接问题的通知
* @see 国税发[2005]196号
*/
public class IndivadualIncomeTax {
TaxParameter para = new TaxParameter();
public double getSource(double income){
return income - para.getFreeAmount();
}
public double getTax(double income) throws Exception{
double source = getSource(income);
System.out.println("纳税工资:"+source);
double revenue = 0;//记录税额
double[] amountArray = para.getAmountArray();
double baseRate = para.getBaseRate();
for(int i=0; i<para.getLevelNum(); i++){
double levelRate = 0;
double levelAmount = 0;
double margin = amountArray[i]-(i==0?0:amountArray[i-1]);
if(source <= amountArray[i]){
levelAmount = source;
levelRate = levelAmount*baseRate*(i+1);
revenue = revenue + levelRate;
source = source - margin;
System.out.println("level "+(i+1)+" amount:\t" + levelAmount+ "\t rate: \t" + levelRate );
break;
}else if(source > amountArray[i]){
levelAmount = margin;
levelRate = levelAmount*baseRate*(i+1);
revenue = revenue + levelRate;
source = source - margin;
System.out.println("level "+(i+1)+" amount:\t" + levelAmount+ "\t rate: \t" + levelRate );
}
}
System.out.println("Month's Totle Rate Amount:\t"+ revenue);
return revenue;
}
public static void main(String[] args) throws Exception {
System.out.println((new IndivadualIncomeTax()).getTax(100000));
}
}