有人能用编程语言讲解「税后到手工资」的计算方式吗?

2022-11-26 17:15:16 +08:00
 llbbzh

楼主是个大学生,这两天在了解怎么用税前工资计算税后工资,结果搞得晕头转向:

  1. 搞不清大家说的「公司付 X%,个人付 Y%」是以什么为基准计算的,扣完五险一金之后个人所得税又怎么计算?
  2. 既有年终奖又有月基本工资的时候又该怎么算;
  3. 我看到个人所得税速算扣除数就觉得头晕,完全不知道怎么拿来算,而且现在个税制度一直在改革,好像每月的个税比例都不一样,就更难算了;
  4. 每个城市的算法还不太一样!

有人能用程序语言介绍一下每月或者每年的到手工资怎么算吗?什么语言都行,只要逻辑对就行了。

比如月的:

def 计算每月到手工资(base):
    pass

或者年薪总包:

def 计算到手年薪(base, 年终奖):
    pass

在这里谢谢各位大佬了_(:з」∠)_

4711 次点击
所在节点    程序员
34 条回复
neutrinos
2022-11-27 00:05:00 +08:00
作业?
RadishWind
2022-11-27 00:34:59 +08:00
0.78*n
Maxvell
2022-11-27 02:33:20 +08:00
之前数学建模的作业就是有关个税的,给你张图片参考下 https://web343434.oss-cn-hangzhou.aliyuncs.com/Quicker_20221126_143051.png
shuangya
2022-11-27 02:44:17 +08:00
年应纳税所得额=年收入-免税,免税包括每月 5000 的起征点、五险一金、专项附加扣除、其他扣除(比如公益捐赠、地方优惠政策等)

比如月薪 3w ,每月五险一金交 4k ,专项附加扣除有一个每月 1500 的房租,其他没有,一年下来就是 2w*12-(5000*12+4k*12+1500+12)=114000 ,对应到税率表上就是第二档,应交税 114000*10%-2520=8880 ,其中 10%是这一档的税率,2520 是速算扣除数;

对于单个月的计算方式,和整年计算方式类似;唯一不同是累加制;还是以上面的例子为例:
* 到 3 月工资时,应纳税所得额=28500 ,属于第一档;应交税(前三月一共):28500*3%=855 。前三月因为没有进入新阶梯,每个月都一样,所以不展开;
* 到 4 月工资时,应纳税所得额=38000 ,属于第二档;应交税(前四月一共):38000*10%-2520=1280 。因为你前三个月已经交了 855 了,所以这个月需要再交 1280-855=425 元;
* 到 5 月工资时,应纳税所得额=47500 ;应交税(前五月一共):47500*10%-2520=2230 。因为你前四个月已经交了 1280 了,所以这个月需要再交 2230-1280=950 元;
* 以此类推;

另外注意,因为是按年度计算的,所以每月扣的算是“预扣”,最后年度汇算的时候,多退少补;

-------------------------
单独回答楼主的几个问题:
1.1 「公司付 X%,个人付 Y%」是以什么为基准计算的:以公司给你上报的工资是多少计算;比如公司给你报 2w 工资,其中养老保险为单位 19%个人 8%,则你这个月养老保险要交 1600 元;单位交的部分你可以忽略(和你没关系);
1.2 扣完五险一金之后个人所得税又怎么计算:五险一金属于免税部分,个税只算应纳税所得额,即 原工资-5000-五险一金个人部分-专项附加扣除-其他扣除;
2.既有年终奖又有月基本工资的时候又该怎么算:目前可以选择分开计算还是并入工资计算;如果分开计算,则年终奖有单独的所得税表,单独计税;如果合并计算,则年终奖+基本工资一起计算;
3.1 应纳税所得额*税率-速算扣除数=实际交税,比如 36000-144000 这一档是 10%/2520 ,你的应纳税所得额是 114000 ,则应交税 114000*10%-2520=8880
3.2 每月的个税比例都不一样:因为每个月你的年应纳税所得额都是在涨的,如果进入到新的一个阶梯比例就更高;计算方式是累计计算,不是计算单个月的;即 当月交税=截止当月总应交税-截止上月实际已扣税;
4. 城市只影响五险一金比例和部分地方优惠政策,其他部分都一样的;一般月工资固定的情况下,五险一金也是固定的,不难计算;
shuangya
2022-11-27 02:44:55 +08:00
@shuangya 打错,不是月薪 3w ,是 2w
0ZXYDDu796nVCFxq
2022-11-27 02:54:44 +08:00
有些特殊情况需要考虑的:
1. 社保、公积金缴纳都有上限。一般是当地上年度平均月收入的 n 倍为上限
2. 社保有些公司是按下限或者某些额度缴纳的,不是按实际收入
3. 公积金的比例并不是固定的
4. 医保根据年龄缴纳比例不一样
shuangya
2022-11-27 03:02:38 +08:00
伪代码(假设公司给你报的月薪与你实际月薪一致)

var base = 月薪;
var rate = xx%; // 五险一金比例
var other = 0; // 每月其他扣除,如果有的话

function 获取金额对应的税率(money);
function 获取金额对应的速算扣除数(money);

function 计算某月个税(月份) {
// 如果公司给你报的月薪与你实际月薪不一致,那这里的 base * rate 需要改成 公司上报的月薪 * rate
var 总应纳税所得额 = (base - base * rate - other) * 月份;
var 总纳税 = 总应纳税所得额 * 获取金额对应的税率(总应纳税所得额) - 获取金额对应的速算扣除数(总应纳税所得额)
var 截止上月应纳税所得额 = (base - base * rate - other) * (月份 - 1);
var 截止上月总纳税 = 截止上月应纳税所得额 * 获取金额对应的税率(截止上月应纳税所得额) - 获取金额对应的速算扣除数(截止上月应纳税所得额);
return 总纳税 - 截止上月总纳税;
}

function 计算到手年薪(分别计税)(base, 年终奖) {
// 如果公司给你报的月薪与你实际月薪不一致,那这里的 base * rate 需要改成 公司上报的月薪 * rate
var 总应纳税所得额 = (base - base * rate - other) * 12;
var 总纳税 = 总应纳税所得额 * 获取金额对应的税率(总应纳税所得额) - 获取金额对应的速算扣除数(总应纳税所得额);

var 年终奖纳税 = 年终奖 * 获取金额对应的税率(年终奖) - 获取金额对应的速算扣除数(年终奖);

return 总纳税 + 年终奖纳税;
}

function 计算到手年薪(合并计税)(base, 年终奖) {
// 如果公司给你报的月薪与你实际月薪不一致,那这里的 base * rate 需要改成 公司上报的月薪 * rate
var 总应纳税所得额 = (base - base * rate - other) * 12 + 年终奖;
retutn 总应纳税所得额 * 获取金额对应的税率(总应纳税所得额) - 获取金额对应的速算扣除数(总应纳税所得额);
}
shuangya
2022-11-27 03:04:50 +08:00
@shuangya 更正:下面两个函数不是计算到手金额,是计算个税
datou
2022-11-27 08:11:21 +08:00
import 工资条

const 税后到手工资 = 工资条.实发工资
CRVV
2022-11-27 12:58:35 +08:00
1. 「公司付 X%,个人付 Y%」是以什么为基准计算的,扣完五险一金之后个人所得税又怎么计算?

比如谈的每月工资 10000 ,个人和公司的 x% 都用这个 10000 来算


2. 既有年终奖又有月基本工资的时候又该怎么算

年终奖不用交五险一金,税好像有不同的算法吧我不太确定。


3. 我看到个人所得税速算扣除数就觉得头晕,完全不知道怎么拿来算,而且现在个税制度一直在改革,好像每月的个税比例都不一样,就更难算了;

个人所得税的算法是这样的
五险一金部分不用交所得税,先减掉,比如月薪 50000 ,假设扣完五险一金还有 40000 。
每个月有 5000 的免税额,就是说这里面有 5000 不用交税,这样还剩 35000 。
然后有那些租房养娃什么的免税额,比如有 3 个娃 1 个老人,这样又有 5000 不用交税,这样还剩 30000 要交税的收入。
这样,每个月的 30000 ,叫做应纳税所得额。

一月,当年的应纳税所得额是 30000 ,税率 3%,交税 900
二月,当年的应纳税所得额是 60000 ,其中 36000 以下的部分是 6000 税率 3% 就是 180 ,36000 以上的部分是 24000 税率 10% 就是 2400 ,这个月要交税 180+2400=2580
三月,当年的应纳税所得额是 90000 ,这个月的收入都是 36000 以上的部分,税率 10% 交 3000 的税
四月,当年的应纳税所得额是 120000 ,这个月的收入都是 36000 以上的部分,税率 10% 交 3000 的税
五月,当年的应纳税所得额是 150000 ,这个月的收入在 144000 以下的部分是 24000 税率 10% 交 2400 的税,还有 6000 在 144000 以上税率 20% 交 1200 的税,这样一共交 3600 的税
后面都是这样算下去的。

这样算需要一个月一个月地累加,有人觉得麻烦,就搞了个速算扣除数。比如第二个月的总数是 60000 ,36000-144000 之间的速算扣除数是 2520 ,60000*10% - 2520 = 3480 就得到了总的税额,再减掉一月的 900 ,得到二月的税是 2580 。
如果要算一年的税额,直接 30000*12 = 360000 ,税率是 25%,36000*25% = 90000 ,再减掉速算扣除数 31920 ,得到全年的个人所得税是 58080 。这样比一个月一个月加上来要少按几下计算器,如果用 Excel 来算我觉得这东西完全没必要。

因为工资是按月发的就每个月都这么算,但如果在 10 月 31 日离职了,后面两个月没有工资,但免税的额度还在,全年的应纳税所得额就变成了 30000*10 - (5000+5000)*2 = 280000 ,但是在 10 月已经交了 300000 对应的税,这样第二年就可以申报把多交的 20000*20% = 4000 的税钱退回来。这个情况我的理解是这样,但我也没操作过,不保证正确。


4. 每个城市的算法还不太一样!

五险一金不一样,差别不会很大,税是一样的
Proletariused
2022-11-27 13:01:30 +08:00
julyclyde
2022-11-27 16:42:14 +08:00
@llbbzh 如果某一项看不懂,可以有针对性的问
如果“完全”看不懂……我想你大概用不上这个
llbbzh
2022-11-27 18:25:07 +08:00
@Maxvell @zpf124 非常感谢两位兄弟!!正好就是我非常想要的答案!!会认真看的!
Maxvell
2022-11-28 01:01:30 +08:00
@llbbzh 补充一下:总工资=年工资+年终奖

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/898119

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX