2020新版个税计算--每月工资计算[Java版]

前言

新个税已经出来一年多了,发现其实还有挺多小伙伴并不清楚个税是怎么计算的,年终奖是怎么扣除的,不过没关系,毕竟没有程序员解决不了的事情,如果有,请给我换个秃头的程序员[手动滑稽]。话不多说,让我们先从计算个人所得税的几个重要概念说起,当然,如果不想了解概念直接看代码的也可以直接拖到最下面复制代码。

应纳税所得额

应纳税所得额 = 工资 - 起征点 - 专项附加扣除 - 五险一金

  • 起征点
    2019年起,个人所得税起征点改为5000
  • 专项附加扣除
    子女教育:纳税人的子女接受全日制学历教育的相关支出,按照每个子女每月1000元的标准定额扣除。
    继续教育:纳税人在中国境内接受学历(学位)继续教育的支出,在学历(学位)教育期间按照每月400元定额扣除。同一学历(学位)继续教育的扣除期限不能超过48个月。纳税人接受技能人员职业资格继续教育、专业技术人员职业资格继续教育的支出,在取得相关证书的当年,按照3600元定额扣除。
    住房贷款:纳税人本人或者配偶单独或者共同使用商业银行或者住房公积金个人住房贷款为本人或者其配偶购买中国境内住房,发生的首套住房贷款利息支出,在实际发生贷款利息的年度,按照每月1000元的标准定额扣除,扣除期限最长不超过240个月。纳税人只能享受一次首套住房贷款的利息扣除。
    住房租金:纳税人在主要工作城市没有自有住房而发生的住房租金支出,可以按照以下标准定额扣除:
    (一)直辖市、省会(首府)城市、计划单列市以及国务院确定的其他城市,扣除标准为每月1500元;
    (二)除第一项所列城市以外,市辖区户籍人口超过100万的城市,扣除标准为每月1100元;市辖区户籍人口不超过100万的城市,扣除标准为每月800元。
    赡养老人:纳税人赡养一位及以上被赡养人的赡养支出,统一按照以下标准定额扣除:
    (一)纳税人为独生子女的,按照每月2000元的标准定额扣除;
    (二)纳税人为非独生子女的,由其与兄弟姐妹分摊每月2000元的扣除额度,每人分摊的额度不能超过每月1000元。可以由赡养人均摊或者约定分摊,也可以由被赡养人指定分摊。约定或者指定分摊的须签订书面分摊协议,指定分摊优先于约定分摊。具体分摊方式和额度在一个纳税年度内不能变更。
    其中住房贷款住房租金只能二选一。
  • 五险一金
    五险一金包括养老保险,医疗保险,失业保险,生育保险,工伤保险和住房公积金。以上海为例,五险一金的比例是:
    个人:养老保险 8%,医疗保险 2%,失业保险0.5%,住房公积金7%,工伤保险0%,生育保险0%;
    公司:养老保险20%,医疗保险10%,失业保险0.5%,住房公积金7%,工伤保险0.3%,生育保险1%;
    我们计算个税只用个人的就可以了,合计是17.5%。

例子:小王在上海工资两万,且在上海租房,每月可扣除1500专项附加费,那他的应纳税所得额计算如下:
应纳税所得额 = 20000 - 5000(起征点) - 1500(专项附加扣除) - 20000 * 17.5%(五险一金) = 10000

税率

级数 累计预扣预缴应纳税所得额 预扣率(%) 速算扣除数
1 不超过36000元的部分 3 0
2 超过36000元至144000元的部分 10 2520
3 超过144000元至300000元的部分 20 16920
4 超过300000元至420000元的部分 25 31920
5 超过420000元至660000元的部分 30 52920
6 超过660000元至960000元的部分 35 85920
7 超过960000元的部分 45 181920

有了税率,我们便可以方便的计算工资了。
例子:好了小王他又来了,假设小王的一年的累计预扣预缴应纳税所得额(后面会解释)为120000,那么他今年要缴纳的个人所得税为如下公式:
个人所得税 = 36000(不超过36000元的部分) * 0.03 + (120000 - 36000)(超过36000元至144000元的部分) * 0.1 = 9480
那既然都能算出个税的结果了,表格最后一栏的速算扣除数是干啥用的?既然你诚心诚意的问了,额,好吧,你不问我也要说。

速算扣除数

为了方便计算个税,避免分段计算,国家给出了速算扣除数,并通过以下公式使用:
个人所得税 = 应纳税所得额 * 税率 - 速算扣除数
我们不妨验证一下(呼叫小王):
个人所得税 = 120000(144000元~300000元) * 0.1 - 2520(速算扣除数) = 9480
是不是恍然大悟了呢,根据上表的预扣率,其实我们不用国家给,自己也能计算出每个阶段的速算扣除数[手动傲娇]。
2520 = 36000 * (0.1 - 0.03)
16920 = 2520 + 14400 * (0.2 - 0.1)
31920 = 16920 + 300000 * (0.25 - 0.2)
52920 = 31920 + 420000 * (0.3 - 0.25)
(我吐了,我的工资又不用交这个档的税,我算那么多干嘛...不算了!)

累计预扣缴额

上面提到了这个概念,这里解释一下:
以前是以每个月工资金额扣税,19年开始以一年以内按照每个月叠加进行按年计税。
1月份扣税,以第一个月应纳税所得额为基数
2月份扣税,是以前两个月应纳税所得额为基数
3月份扣税,是以前三个月应纳税所得额为基数
...
以此列推

计算每月工资

为了计算每月工资,可以使用如下几个公式
当月工资 = 基本工资 + 浮动奖金(绩效工资) - 当月应缴税 - 五险一金
其中基本工资,浮动奖金,五险一金均已知,我们只需计算当月应缴税
当月应缴税 = 当月累计应缴税 - 上月累计应缴税(累计已缴税)
所以我们需要求得每月累计应缴税,公式如下:
累计应缴税 = 累计应缴税额 * 税率 - 速算扣除数(个人所得税 = 应纳税所得额 * 税率 - 速算扣除数)
税率速算扣除数累计应缴税额有关,我们只需要求得每月的应缴税额然后累加即可
每月的应缴税 = 基本工资 + 浮动奖金(绩效工资) - 起征点 - 专项扣除 - 五险一金
经过上述分析,我们已经总结出了整个程序的公式。下面展示代码

代码

import java.util.ArrayList;
import java.util.List;

public class IncomeFax {

    public static void main(String[] args) {
        // 小王每月工资两万,浮动奖金为0,专项扣除费为1500,上海的五险一金比例为17.5%
        System.out.println(getMonthlySal(20000, new double[12], 1500.0, 0.175));
    }

    /**
     * @param defaultSal 基本工资
     * @param bonus      浮动奖金(绩效工资)一年内拿了几次工资就输入几个
     * @param special    专项扣除
     * @param insurance  五险一金比例
     */
    public static List<Double> getMonthlySal(double defaultSal, double[] bonus, double special, double insurance) {
        // 累计预扣缴额
        double totalNeedTax = 0.0;
        // 累计已缴税额
        double totalHadTax = 0.0;
        // 每月工资
        List<Double> salArr = new ArrayList<>();
        for (double b : bonus) {
            // 当月预扣缴额(每月的应缴税 = 基本工资 + 浮动奖金(绩效工资) - 起征点 - 专项扣除 - 五险一金)
            double shouldTax = defaultSal + b - 5000 - special - defaultSal * insurance;
            totalNeedTax += shouldTax;
            // 累计应缴税额(累计应缴税额 * 税率 - 速算扣除数`)
            double totalTax;
            if (totalNeedTax <= 36000.0) {
                totalTax = totalNeedTax * 0.03;
            } else if (totalNeedTax <= 144000.0) {
                totalTax = totalNeedTax * 0.1 - 2520;
            } else if (totalNeedTax <= 300000.0) {
                totalTax = totalNeedTax * 0.2 - 16920;
            } else if (totalNeedTax <= 420000.0) {
                totalTax = totalNeedTax * 0.25 - 31920;
            } else if (totalNeedTax <= 660000.0) {
                totalTax = totalNeedTax * 0.30 - 52920;
            } else if (totalNeedTax <= 960000.0) {
                totalTax = totalNeedTax * 0.35 - 85920;
            } else {
                totalTax = totalNeedTax * 0.45 - 181920;
            }
            // 当月应缴税(当月累计应缴税 - 上月累计应缴税(累计已缴税))
            double curTax = totalTax - totalHadTax;
            // 当月工资(当月工资 = 基本工资 + 浮动奖金(绩效工资) - 当月应缴税 - 五险一金)
            double curSal = defaultSal + b - curTax - defaultSal * insurance;
            salArr.add(curSal);
            totalHadTax = totalTax;
        }
        return salArr;
    }
}

以上代码能打印出每月的工资,如果你有需要,也可以打印出代码中注释的任何内容。赶紧复制代码来算算自己的工资吧,下一篇教你如何计算你的年终奖。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容