最近写了段计算个人所得税的算法,自己感觉比较不错。
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;
}
}