V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
llbbzh
V2EX  ›  程序员

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

  •  
  •   llbbzh · 2022-11-26 17:15:16 +08:00 · 4711 次点击
    这是一个创建于 729 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    比如月的:

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

    或者年薪总包:

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

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

    34 条回复    2022-11-28 01:01:30 +08:00
    zcf0508
        1
    zcf0508  
       2022-11-26 17:38:49 +08:00 via Android
    小程序搜 2019 个税工资计算器
    edis0n0
        2
    edis0n0  
       2022-11-26 17:53:44 +08:00
    def 计算每月到手工资(base):
    return random.randint(base*0.01, base*1.10)
    llbbzh
        3
    llbbzh  
    OP
       2022-11-26 17:57:50 +08:00
    @zcf0508 这两天就在玩这玩意,但它也不给源码啊,还是不会算
    wu67
        4
    wu67  
       2022-11-26 17:58:08 +08:00
    税率是按你今年已获得的总税前收入确定的, 就是百分几那个.

    年终跟基本工资没直接关系, 虽然大部分公司的年终是给一个月工资, 但本质上讲他们没联系, 只是数字相同, 或者是月工资上下浮动

    公司交的是统筹, 个人交的入个人账户. 公积金交多少都是进你个人账户(免税的). 养老金 个人在退休前没法动, 你能动的只有公积金, 以广州为例, 可以用租房名义提取, 每月 500 额度. 有合同备案号可以更高额度, 但是我忘了是多少, 因为我的交得少, 所以月 500 够提了.

    计算就是 月薪 = (税前 - 免税额度(租房、房贷、教育等等) - 险金的个人缴纳部分) * 税率.
    年薪一般说的都是税前. 如果要算你自己实际税后年金, 得算你每个月税后再累加
    wu67
        5
    wu67  
       2022-11-26 17:59:48 +08:00
    上面等式写错了, 等式算的是 月薪的税
    rimutuyuan
        6
    rimutuyuan  
       2022-11-26 18:06:07 +08:00   ❤️ 5
    先按照税前薪资扣个人部分五险一金,扣完后是应税工资,年终奖和月收入一起计入年应税工资,按照税率表计税,每年进行年度汇算退 /补税

    你需要了解的东西,各城市五险比例(个人交多少比例,公司交的那一部分不需要关心)

    速算扣除数很好理解

    如 1000 以下交 10%的税,1000 以上交 20%的税,当你薪资 1500 时,应交税额是 1000*10%+500*20%=200 ,为了便于计算,可以直接按照 1500*20%计算,此时多算了 1000*10%,这个 100 就是 1000 以上薪资时的速算扣除数
    rimutuyuan
        7
    rimutuyuan  
       2022-11-26 18:07:25 +08:00   ❤️ 1
    我都是用这个算,比较符合我的需求

    https://www.xinrenxinshi.com/calculator

    说实话这些内容,等你毕业后,真正赚钱多少影响你时,你自然就会学习了,在学校里确实会感觉这些东西一头雾水
    snw
        8
    snw  
       2022-11-26 18:35:42 +08:00 via Android
    速算扣除数不建议用编程语言来解释,推荐用画图来解释。
    renmu
        9
    renmu  
       2022-11-26 18:37:36 +08:00 via Android
    就是你今年累积工资越高,税率越高
    llbbzh
        10
    llbbzh  
    OP
       2022-11-26 19:51:44 +08:00
    真的很感谢楼上两位答主,这个计算器收藏了
    但网上大家都是这么讲解的,我完全看不懂😭 所以才说用程序语言
    xinh
        11
    xinh  
       2022-11-26 19:52:48 +08:00 via iPhone
    大学生看看个人所得税法和实施条例就了解了
    billlee
        12
    billlee  
       2022-11-26 20:02:58 +08:00
    都用程序语言了还搞什么速算扣除,直接按定义算就可以了。
    Eathein
        13
    Eathein  
       2022-11-26 20:16:09 +08:00
    小米计算器里有算到手工资的
    zpf124
        14
    zpf124  
       2022-11-26 20:28:24 +08:00   ❤️ 1
    我好些年没看过想过内容了,只记得大概了具体算法和税率忘完了,楼主自己看个大概吧。
    -------
    var 本月税前收入 = 10000 ;
    var 当年税前总收入 += 本月税前收入;
    var 本月扣除社保收入 = 本月税前收入 - 本月税前收入*0.10 ;
    if(本月税前收入 <= 5000) { // 这个不纳税的收入线是多少我忘了,好想和城市最低收入有关。
    return 本月扣除社保收入;
    }
    if(当年税前总收入)
    zpf124
        15
    zpf124  
       2022-11-26 20:37:11 +08:00   ❤️ 1
    按错了....
    -------
    var 本月税前收入 = 10000 ;
    var 本月扣除社保收入 = 本月税前收入 - 本月税前收入* 10%;
    var 当年税前总收入 += 本月扣除社保收入;
    if(本月税前收入 <= 5000) { // 这个不纳税的收入线是多少我忘了,好想和城市最低收入有关。
    return 本月扣除社保收入;
    }
    if(当年税前总收入-纳税最低标准 - 专项扣除 /12 < 120000){
    return 本月扣除社保收入 - (本月扣除社保收入-纳税最低标准) * 10%;
    }
    if(当年税前总收入> 120000){
    return 本月扣除社保收入 - 本月扣除社保收入 * 10% - (本月扣除社保收入-纳税最低标准-10000) *20%;
    }
    zpf124
        16
    zpf124  
       2022-11-26 20:51:25 +08:00   ❤️ 1
    全凭印象了。
    社保大概是固定的 10%,看你们公司给你提交的社保缴纳基数,如果你只算自己收入的,不用管什么公司缴多少,反正基本都和你无关,不论是现在缴还是等你快老死了领的时候。

    个人所得税的话大致和阶梯电价、阶梯水价一个意思。
    收入超过一个阶梯之后,超阶梯的部分税率会更高,然后收入是安当年累计的,第二年报税那几个月开始新一年累计。


    另外社保部分是免税的。社保扣的多,扣税的收入基数就低,税就更少。

    所以比如俩人 A 、B ; A 和老板谈的 2W 全额五险一金,B 也 2W 但最低基数缴五险一金,最终结果就是 A 每月到手 1.5W , 五险扣 4000 ,个税扣 1000 ; B 每月到手 1.6W ,五险 600 , 个税扣 3000 。
    当然公司成本是不同的,A 可能老板一个月得掏 2.3W ,B 只需要 2.1W 。
    Jooooooooo
        17
    Jooooooooo  
       2022-11-26 21:10:45 +08:00
    这个取决你认不认为社保是税.
    ql562482472
        18
    ql562482472  
       2022-11-26 22:28:27 +08:00
    fun 本月到手(int 今年已发全部税前,int 本月税前工资){
    return 本月税前-本月扣税(今年已发全部税前+本月税前)-五险一金
    }
    fun 本月扣税(int 截至本次总收入){
    return 有个速算扣除数表可查
    }

    然后第二年 3 月份会再有一次上年度年度汇算,多退少补
    pengtdyd
        19
    pengtdyd  
       2022-11-26 23:31:54 +08:00
    每个月这点工资,打开电脑编程,不知道够不够电费哦
    andong777
        20
    andong777  
       2022-11-26 23:58:02 +08:00
    这个跟用不用编程语言没啥关系。要是不理解规则,写成 15 楼那样的伪代码你一样看不懂。主要就是应纳税所得额和阶梯税率
    neutrinos
        21
    neutrinos  
       2022-11-27 00:05:00 +08:00 via iPhone
    作业?
    RadishWind
        22
    RadishWind  
       2022-11-27 00:34:59 +08:00
    0.78*n
    Maxvell
        23
    Maxvell  
       2022-11-27 02:33:20 +08:00   ❤️ 1
    之前数学建模的作业就是有关个税的,给你张图片参考下 https://web343434.oss-cn-hangzhou.aliyuncs.com/Quicker_20221126_143051.png
    shuangya
        24
    shuangya  
       2022-11-27 02:44:17 +08:00   ❤️ 1
    年应纳税所得额=年收入-免税,免税包括每月 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
        25
    shuangya  
       2022-11-27 02:44:55 +08:00   ❤️ 1
    @shuangya 打错,不是月薪 3w ,是 2w
    0ZXYDDu796nVCFxq
        26
    0ZXYDDu796nVCFxq  
       2022-11-27 02:54:44 +08:00
    有些特殊情况需要考虑的:
    1. 社保、公积金缴纳都有上限。一般是当地上年度平均月收入的 n 倍为上限
    2. 社保有些公司是按下限或者某些额度缴纳的,不是按实际收入
    3. 公积金的比例并不是固定的
    4. 医保根据年龄缴纳比例不一样
    shuangya
        27
    shuangya  
       2022-11-27 03:02:38 +08:00   ❤️ 1
    伪代码(假设公司给你报的月薪与你实际月薪一致)

    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
        28
    shuangya  
       2022-11-27 03:04:50 +08:00   ❤️ 1
    @shuangya 更正:下面两个函数不是计算到手金额,是计算个税
    datou
        29
    datou  
       2022-11-27 08:11:21 +08:00
    import 工资条

    const 税后到手工资 = 工资条.实发工资
    CRVV
        30
    CRVV  
       2022-11-27 12:58:35 +08:00   ❤️ 1
    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
        31
    Proletariused  
       2022-11-27 13:01:30 +08:00
    julyclyde
        32
    julyclyde  
       2022-11-27 16:42:14 +08:00
    @llbbzh 如果某一项看不懂,可以有针对性的问
    如果“完全”看不懂……我想你大概用不上这个
    llbbzh
        33
    llbbzh  
    OP
       2022-11-27 18:25:07 +08:00
    @Maxvell @zpf124 非常感谢两位兄弟!!正好就是我非常想要的答案!!会认真看的!
    Maxvell
        34
    Maxvell  
       2022-11-28 01:01:30 +08:00
    @llbbzh 补充一下:总工资=年工资+年终奖
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5996 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 03:05 · PVG 11:05 · LAX 19:05 · JFK 22:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.