最近写了段计算个人所得税的算法,自己感觉比较不错。 public float ComputeTax(float income) //income为工资 { float f_income=income-800; //起征基数为800,同时也可以参数化处理 float[] tax_line={0f,500f,2000f,5000f,20000f,40000f,60000f,80000f,100000f};//计算个人所得税的档次(假设员工为中国国籍,因为国籍不同起征点数不同,税率不同。) float[] tax_rate={0f,0.05f,0.10f,0.15f,0.20f,0.25f,0.30f,0.35f,0.40f}; //各档次税率 float[] tax_sub={0.f,25f,125f,375f,1375f,3375f,6375f,10375f,15375f}; //采用了简化算法 int i_tax_level=0; //为了计算简便,把工资进行分档 while(f_income>tax_line[i_tax_level]&&i_tax_level<tax_line.length) { i_tax_level++; }; if(i_tax_level>0) { float f_tax=tax_sub[i_tax_level-1]+(f_income-tax_line[i_tax_level-1])*tax_rate[i_tax_level]; //算税的公式 return f_tax; } else { return 0f; } } 
|