一直以来工资被扣税都不知道怎么算的,查了一下资料发现笔算起来挺麻烦的(每次都要对着表弄),于是做一个小程序代劳。
(使用2008年3月生效的2000起征点)
主代码如下:
//
计算个人所得税按钮单击事件
private
void
button2_Click(
object
sender, EventArgs e)
{
if
(t_wage.Text.Trim().Length
==
0
)
return
;
//
工资上缴个人所得税表 (工资-2000) 之后的起始、终止、税率、减除额
ArrayList taxTables
=
new
ArrayList();
taxTables.Add(
new
TaxTable(
0
,
500
,
5
,
0
));
taxTables.Add(
new
TaxTable(
500
,
2000
,
10
,
25
));
taxTables.Add(
new
TaxTable(
2000
,
5000
,
15
,
125
));
taxTables.Add(
new
TaxTable(
5000
,
20000
,
20
,
375
));
taxTables.Add(
new
TaxTable(
20000
,
40000
,
25
,
1375
));
taxTables.Add(
new
TaxTable(
40000
,
60000
,
30
,
3375
));
taxTables.Add(
new
TaxTable(
60000
,
80000
,
35
,
6375
));
taxTables.Add(
new
TaxTable(
80000
,
100000
,
40
,
10375
));
taxTables.Add(
new
TaxTable(
100000
,
double
.MaxValue,
45
,
15375
));
msg.ForeColor
=
Color.Tomato;
try
{
double
wage
=
double
.Parse(t_wage.Text);
double
wage_Tax
=
wage
-
2000
;
double
tax
=
0
;
foreach
(TaxTable tb
in
taxTables)
{
if
(wage_Tax
>
tb.tax_low
&&
wage_Tax
<=
tb.tax_up)
{
tax
=
wage_Tax
*
tb.taxRate
/
100
-
tb.deduct;
break
;
}
}
double
remain
=
wage
-
tax;
msg.Text
=
"
税前工资:
"
+
t_wage.Text
+
"
元\r\n
"
+
"
税后工资:
"
+
remain.ToString()
+
"
元\r\n
"
+
"
应交个人所得税:
"
+
tax.ToString()
+
"
元
"
;
}
catch
(Exception ex)
{
msg.Text
=
ex.Message;
}
}
///
<summary>
///
存放个人所得税税率表的类
///
</summary>
class
TaxTable
{
public
double
tax_low;
//
工资-2000后
public
double
tax_up;
//
工资-2000后
public
int
taxRate;
//
取值范围0--100
public
int
deduct;
//
减除额
public
TaxTable(
double
Ptax_low,
double
Ptax_up,
int
PtaxRate,
int
Pdeduct)
{
tax_low
=
Ptax_low;
tax_up
=
Ptax_up;
taxRate
=
PtaxRate;
deduct
=
Pdeduct;
}
}
要是有需要又懒得自己实现,这里有下载:
源码下载:
Code 演示版(可当小工具使用):
Demo