答案:不可能。

这个问题是一位同事提出的,我看了半天税的算法,还是不懂,于是用画图的方法把税前和税后的钱数画出来,清楚多了。

根据现有的个人所得税政策(起征点3500),税前税后的关系如图:

收入0–100000

那为啥那位同事那么说呢,可能和我们奇怪的政策有关,具体的政策实在太复杂,我实现不了。


代码如下,好事者可以研究一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function retval = tax (money)
start = 3500;
l = money .- start;
l(l <= 0) = 0;

retval = arrayfun(@p, l);
endfunction

function r = p (val)
table = [1500 0.03 0
4500 0.10 105
9000 0.20 555
35000 0.25 1005
55000 0.30 2755
80000 0.35 5505
80000 0.45 13505
];
for x = 1:size(table, 1)
if (val <= table(x, 1))
r = val * table(x, 2) - table(x, 3);
return;
endif
endfor
r = val * table(end, 2) - table(end, 3);
endfunction

x = [0:100000]; plot(x, x - tax(x));
set(findall(gcf(), "-property", "interpreter"), "interpreter", "TeX");
xlabel('\fontsize{24}{Pre-tax}');
ylabel('\fontsize{24}{After-tax}');
set(gca(), "xminortick", "on", "yminortick", "on");
print("Tax1.ps", "-color");