个税计算器完美终极版
个人所得税计算器软件是一款使用超强方便、快捷的个人所得税计算软件。
本软件严格按照国家《个人所得税法》相关规定制作,税目分类清晰,计算结果准确可靠,可非常方便地对工资薪金所得;
本软件体积小巧、界面简洁、使用方便,是是您计算个人所得税的得力助手,相信使用本软件后定能给您带来极大的方便,让你再不必为在计算时该使用哪一级税率,速算扣除数是多少而烦恼。
2011-11-03 推出1.0.1版本:
本版本只支持2011年9月份以后的新税制。
2011-11-07日升级内容:
1. 添加动画效果。
2. 解决小屏幕UI显示问题。
2011-12-04日升级内容:
1. 增加新老税制对比。
2. 解决高分辨率屏幕UI显示问题。
3. 解决个税为0时的崩溃bug
本软件严格按照国家《个人所得税法》相关规定制作,税目分类清晰,计算结果准确可靠,可非常方便地对工资薪金所得;
本软件体积小巧、界面简洁、使用方便,是是您计算个人所得税的得力助手,相信使用本软件后定能给您带来极大的方便,让你再不必为在计算时该使用哪一级税率,速算扣除数是多少而烦恼。
2011-11-03 推出1.0.1版本:
本版本只支持2011年9月份以后的新税制。
2011-11-07日升级内容:
1. 添加动画效果。
2. 解决小屏幕UI显示问题。
2011-12-04日升级内容:
1. 增加新老税制对比。
2. 解决高分辨率屏幕UI显示问题。
3. 解决个税为0时的崩溃bug
2011-12-27日升级内容:
1. 增加帮助信息。
2. 增加个人和企业缴费对比。
3. 解决社保上限bug。
4. 支持全国主要的37个城市的社保。
下载地址:
/Files/kangyi/android app/BestTaxCalculatorSigned.zip
1 /**
2 * 全月应纳所得税额 税率 速算扣除数
3 * 全月纳税额不超过1500元 3% 0
4 * 全月纳税额不超过1500元至4500元 10% 105
5 * 全月纳税额不超过4500元至9000元 20% 555
6 * 全月纳税额不超过9000元至35000元 25% 1005
7 * 全月纳税额不超过35000元至55000元 30% 2755
8 * 全月纳税额不超过55000元至80000元 35% 5505
9 * 全月纳税额超过80000元 45% 13505
10 *
11 * @param wage
12 * your salary
13 *
14 */
15 static HashMap<String, Double> taxCal(double wage) {
16 HashMap<String, Double> hashMap = new HashMap<String, Double>();
17 // 工资上缴个人所得税表 (工资-3500) 之后的起始、终止、税率、减除额
18 ArrayList<TaxTable> taxTables = new ArrayList<TaxTable>();
19 taxTables.add(new TaxTable(0, 1500, 3, 0));
20 taxTables.add(new TaxTable(1500, 4500, 10, 105));
21 taxTables.add(new TaxTable(4500, 9000, 20, 555));
22 taxTables.add(new TaxTable(9000, 35000, 25, 1005));
23 taxTables.add(new TaxTable(35000, 55000, 30, 2755));
24 taxTables.add(new TaxTable(55000, 80000, 35, 5505));
25 taxTables.add(new TaxTable(80000, Double.MAX_VALUE, 45, 13505));
26
27 // 工资上缴个人所得税表 (工资-2000) 之后的起始、终止、税率、减除额
28 ArrayList<TaxTable> oldTaxTables = new ArrayList<TaxTable>();
29 oldTaxTables.add(new TaxTable(0, 500, 5, 0));
30 oldTaxTables.add(new TaxTable(500, 2000, 10, 25));
31 oldTaxTables.add(new TaxTable(2000, 5000, 15, 125));
32 oldTaxTables.add(new TaxTable(5000, 20000, 20, 375));
33 oldTaxTables.add(new TaxTable(20000, 40000, 25, 1375));
34 oldTaxTables.add(new TaxTable(40000, 60000, 30, 3375));
35 oldTaxTables.add(new TaxTable(60000, 80000, 35, 6375));
36 oldTaxTables.add(new TaxTable(80000, 100000, 40, 10375));
37 oldTaxTables.add(new TaxTable(100000, Double.MAX_VALUE, 45, 15375));
38
39 double wage_Tax = wage - THRESHOLD;
40 double tax = 0;
41 try {
42
43 for (TaxTable tb : taxTables) {
44 if (wage_Tax > tb.mTax_low && wage_Tax <= tb.mTax_up) {
45 tax = Arith.div(Arith.mul(wage_Tax, tb.mTaxRate), 100) - tb.mDeduct;
46 hashMap.put("new_tax", tax);
47 break;
48 }
49 }
50
51 wage_Tax = wage - 2000;
52 for (TaxTable tb : oldTaxTables) {
53 if (wage_Tax > tb.mTax_low && wage_Tax <= tb.mTax_up) {
54 tax = Arith.div(Arith.mul(wage_Tax, tb.mTaxRate), 100) - tb.mDeduct;
55 hashMap.put("old_tax", tax);
56 break;
57 }
58 }
59
60 if(!hashMap.containsKey("new_tax")) hashMap.put("new_tax", 0.0);
61 if(!hashMap.containsKey("old_tax")) hashMap.put("old_tax", 0.0);
62
63 double remain = wage - tax;
64 String output = "税前工资" + Arith.round(wage, 2) + "元\r\n" + "税后工资" + Arith.round(remain, 2)
65 + "元\r\n" + "应交个人所得税:" + Arith.round(tax, 2) + "";
66
67 String output1 = "税前工资" + wage + "元\r\n" + "税后工资" + remain
68 + "元\r\n" + "应交个人所得税:" + tax;
69 System.out.println(output);
70 System.out.println("=================================================");
71 System.out.println(output1);
72 } catch (Exception ex) {
73 System.out.println(ex.toString());
74 }
75 return hashMap;
76 }
3 * 全月纳税额不超过1500元 3% 0
4 * 全月纳税额不超过1500元至4500元 10% 105
5 * 全月纳税额不超过4500元至9000元 20% 555
6 * 全月纳税额不超过9000元至35000元 25% 1005
7 * 全月纳税额不超过35000元至55000元 30% 2755
8 * 全月纳税额不超过55000元至80000元 35% 5505
9 * 全月纳税额超过80000元 45% 13505
10 *
11 * @param wage
12 * your salary
13 *
14 */
15 static HashMap<String, Double> taxCal(double wage) {
16 HashMap<String, Double> hashMap = new HashMap<String, Double>();
17 // 工资上缴个人所得税表 (工资-3500) 之后的起始、终止、税率、减除额
18 ArrayList<TaxTable> taxTables = new ArrayList<TaxTable>();
19 taxTables.add(new TaxTable(0, 1500, 3, 0));
20 taxTables.add(new TaxTable(1500, 4500, 10, 105));
21 taxTables.add(new TaxTable(4500, 9000, 20, 555));
22 taxTables.add(new TaxTable(9000, 35000, 25, 1005));
23 taxTables.add(new TaxTable(35000, 55000, 30, 2755));
24 taxTables.add(new TaxTable(55000, 80000, 35, 5505));
25 taxTables.add(new TaxTable(80000, Double.MAX_VALUE, 45, 13505));
26
27 // 工资上缴个人所得税表 (工资-2000) 之后的起始、终止、税率、减除额
28 ArrayList<TaxTable> oldTaxTables = new ArrayList<TaxTable>();
29 oldTaxTables.add(new TaxTable(0, 500, 5, 0));
30 oldTaxTables.add(new TaxTable(500, 2000, 10, 25));
31 oldTaxTables.add(new TaxTable(2000, 5000, 15, 125));
32 oldTaxTables.add(new TaxTable(5000, 20000, 20, 375));
33 oldTaxTables.add(new TaxTable(20000, 40000, 25, 1375));
34 oldTaxTables.add(new TaxTable(40000, 60000, 30, 3375));
35 oldTaxTables.add(new TaxTable(60000, 80000, 35, 6375));
36 oldTaxTables.add(new TaxTable(80000, 100000, 40, 10375));
37 oldTaxTables.add(new TaxTable(100000, Double.MAX_VALUE, 45, 15375));
38
39 double wage_Tax = wage - THRESHOLD;
40 double tax = 0;
41 try {
42
43 for (TaxTable tb : taxTables) {
44 if (wage_Tax > tb.mTax_low && wage_Tax <= tb.mTax_up) {
45 tax = Arith.div(Arith.mul(wage_Tax, tb.mTaxRate), 100) - tb.mDeduct;
46 hashMap.put("new_tax", tax);
47 break;
48 }
49 }
50
51 wage_Tax = wage - 2000;
52 for (TaxTable tb : oldTaxTables) {
53 if (wage_Tax > tb.mTax_low && wage_Tax <= tb.mTax_up) {
54 tax = Arith.div(Arith.mul(wage_Tax, tb.mTaxRate), 100) - tb.mDeduct;
55 hashMap.put("old_tax", tax);
56 break;
57 }
58 }
59
60 if(!hashMap.containsKey("new_tax")) hashMap.put("new_tax", 0.0);
61 if(!hashMap.containsKey("old_tax")) hashMap.put("old_tax", 0.0);
62
63 double remain = wage - tax;
64 String output = "税前工资" + Arith.round(wage, 2) + "元\r\n" + "税后工资" + Arith.round(remain, 2)
65 + "元\r\n" + "应交个人所得税:" + Arith.round(tax, 2) + "";
66
67 String output1 = "税前工资" + wage + "元\r\n" + "税后工资" + remain
68 + "元\r\n" + "应交个人所得税:" + tax;
69 System.out.println(output);
70 System.out.println("=================================================");
71 System.out.println(output1);
72 } catch (Exception ex) {
73 System.out.println(ex.toString());
74 }
75 return hashMap;
76 }