自从个税抵扣补贴政策出台后,新版本的个税计算方式也发生了很大的变化,从以往的按月扣除变成了年度综合扣除。

个税计算公式:

当月个税=【本年度累计收入工资合计-累计扣除(起征点x月份)-累计附加专项扣除-累计其他扣除】x个税税率-速算扣除-本年累计已缴个税

看不懂?请看如下举例:

小明是一家企业员工,已知小明每月累计扣除总额度为12200,

具体是:子女教育1000+住房贷款1000+瞻仰老人1000+五险一金3000+商业保险200+个税起征5000=12200元

小明2019年发放1月份工资为15000元:则当月个税=(15000-12200)*3%-0-0=84元

小明2019年发放2月份工资为45000元:则当月个税=(15000+45000-12200*2)*3%-0-84=984元

小明2019年发放3月份工资为15000元:则当月个税=(15000+45000+15000-12200*3)*10%-2520-84-984=252元

。。。

可以看出来,计算当月个税是需要知道以往从本年度1月份到上个月的所有纳税信息才能计算出来的,这点比旧的计算方式要复杂一些,但是这种看似环环相扣的算法,用程序来计算,恰到好处。

还是以例子中的小明为例,假设之后固定薪水15200,年底双薪,注意这个免征额度12200,因为每年7月份是公积金基数调整月,因此12200要拆开成9200+3000,这样计算更接地气,可以包容变化的基数!

代码不多,看客莫笑,见谅哈:

public class xx {/* 必须知道每月税前工资多少,免税额度,五险一金,因为每年7月份是公积金基数调整日,7-12月份的五险一金数额会变化 */public static void main(String[] args) {/* 本年度,每月税前工资 */float[] wages = new float[]{15000,45000,15000,15200,15200,15200,15200,15200,15200,15200,15200,30200};/* 每月免税额度 */int  DutyFreeNum  = 9200;/* 1-6月份的五险一金数额 */float FiveSafeAndGJJ1_6 = 3000f;/* 1-6月份的公积金到账数额 */float GJJ1_6 = 2500f;/* 7-12月份的五险一金数额 */float FiveSafeAndGJJ7_12 = 3300f;/* 7-12月份的公积金到账数额 */float GJJ7_12 = 2800f;/* 本年所有应纳税的薪水数额 */float AllTaxableMoney = 0;/* 本年所有已经缴纳的税钱 */float AllAlreadyTax = 0;/* 本年总税前薪水 */float AllPreTaxWages = 0;/* 本年税后薪水 */float AllGetHandWages = 0;/* 本年公积金总数 */float AllGetHandGJJ = 0;DecimalFormat decimalFormat=new DecimalFormat("00.00");    for (int i = 0; i < 12; i++) {float tax = getTax(AllTaxableMoney+wages[i]-DutyFreeNum-(i < 6 ? FiveSafeAndGJJ1_6 : FiveSafeAndGJJ7_12), AllAlreadyTax);AllAlreadyTax += tax;AllTaxableMoney += wages[i]-DutyFreeNum-(i < 6 ? FiveSafeAndGJJ1_6 : FiveSafeAndGJJ7_12);AllPreTaxWages += wages[i];float getHandWages = wages[i]-(i < 6 ? FiveSafeAndGJJ1_6 : FiveSafeAndGJJ7_12)-tax;AllGetHandWages += getHandWages;AllGetHandGJJ += (i < 6 ? GJJ1_6 : GJJ7_12);System.out.print((i+1)+"月份纳税:"+decimalFormat.format(tax)+"\t"+" 总纳税:"+decimalFormat.format(AllAlreadyTax)+"\t"+" 实发:"+decimalFormat.format(getHandWages)+"\t"+" 全部税前工资:"+decimalFormat.format(AllPreTaxWages)+"\t"+" 全部到手工资:"+decimalFormat.format(AllGetHandWages)+"\t"+" 全部到手公积金:"+decimalFormat.format(AllGetHandGJJ)+"\t"+" 全部到手工资+公积金:"+decimalFormat.format(AllGetHandWages+AllGetHandGJJ)+"\n");}}/* 应税额不可为负数 */private static float getTax(float allTaxableMoney, float AllAlreadyTax) {float sui = getTax(allTaxableMoney)-AllAlreadyTax;return sui > 0 ? sui : 0;}/* 输入应税额,得到税金 */private static float getTax(float TaxableMoney) {if (TaxableMoney <= 36000) {return TaxableMoney * 0.03f;} else if (TaxableMoney <= 144000) {return TaxableMoney * 0.1f - 2520;} else if (TaxableMoney <= 300000) {return TaxableMoney * 0.2f - 16920;} else if (TaxableMoney <= 420000) {return TaxableMoney * 0.25f - 31920;} else if (TaxableMoney <= 660000) {return TaxableMoney * 0.3f - 52920;} else if (TaxableMoney <= 960000) {return TaxableMoney * 0.35f - 85920;} else {return TaxableMoney * 0.45f - 181920;}}
}

运行结果如下:

全文结束,谢谢!

新版个税计算方式解读+计算代码相关推荐

  1. 你知道几种乘法的计算方式?

    前言 家里有本<算法详解>一直没有看,昨天晚上打开翻了翻,觉得写的挺有趣的,第一章讨论了一个大家都学过的内容,乘法的计算.大部分人计算乘法,应该都只有一种方式,乘法的计算,也算是一种算法, ...

  2. 深度学习中的IOU计算方式和代码实践

    IOU,全称为intersection of union, 中文名"交并比".这个概念理解起来不难,本文将从原理以及代码实践来解读IOU. 首先要说明的是,IOU在检测领域和分割领 ...

  3. 新版百度网盘MD5 获取计算提取加密映射 方式

    新版百度网盘MD5 获取计算提取加密映射 方式: 对本地文件的md5做如下计算,即可对上后端返回的md5数据 public static String encMd5(String md5) {Stri ...

  4. JavaScript通过js的方式来计算平行四边形的面积的代码

    以下为通过js的方式来计算平行四边形的程序代码和运行截图 目录 前言 一.通过js的方式来计算平行四边形(html部分) 1.1 运行流程及思想 1.2 代码段 二.通过js的方式来计算平行四边形(j ...

  5. Smooth_L1_Loss函数的计算方式

    Smooth_L1_Loss函数的计算方式 从今天开始,阅读faster rcnn的相关代码,并记录我对faster rcnn中特别的层的理解.本篇主要是对smooth_L1_Loss层进行解读.  ...

  6. CC00056.bigdatajava——|Java分支结构.V06|——|Java.v06|ifelseifelse.v02|个人所得税计算方式一|

    一.个人所得帅计算方式一 ### --- 案例题目:~~~ -->根据用户输入的薪水计算个人所得税并打印出来,其中个税起征点为5000元,具体规则如下: 二.编程代码 ### --- 编程代码/ ...

  7. Java基础-时间复杂度计算方式

    Java基础-时间复杂度计算方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   时间复杂度通常是衡量算法的优劣的,衡量算法的时间严格来讲是很难衡量的,由于不同的机器性能不用环境 ...

  8. java时间格式转换_Java中System.currentTimeMillis()计算方式与时间的单位转换

    学会与时间赛跑才能赢得时间的尊重,把握好每一天,趁年轻! java中获取系统当前时间相信大家都会,这是经常用到的也是非常简单的,但还是要经常回顾下一些小细节哦! 一.时间的单位转换 1秒=1000毫秒 ...

  9. python模型预测_python:目标检测模型预测准确度计算方式(基于IoU)

    训练完目标检测模型之后,需要评价其性能,在不同的阈值下的准确度是多少,有没有漏检,在这里基于IoU(Intersection over Union)来计算. 希望能提供一些思路,如果觉得有用欢迎赞我表 ...

  10. 怎么用python编程前二n-1项的等差数列的和_python 等差数列末项计算方式

    等差数列末项计算 题目内容: 给出一个等差数列的前两项a1,a2,求第n项是多少 可以使用以下语句实现非负整数n的输入: n=int(input()) 输入格式: 三行,包含三个整数a1,a2,n 输 ...

最新文章

  1. 【linux】Valgrind工具集详解(二):入门
  2. 手把手教你学Kotlin (2):task1-6 函数,Java to Kotlin Convert,(持续更新中)
  3. 【莓闻】2009年黑莓增长显著 智能手机领域第一
  4. redis的rpm包下载安装
  5. Lintcode 1230解题思路和c++代码
  6. LIS 的 n*log 算法 ———二分维护
  7. Hexo 博客本地预览报错:Error: listen EADDRINUSE 0.0.0.0:4000
  8. linux fileinfo.so,Centos 下编译安装fileinfo扩展
  9. OSPF算法详细说明
  10. 滑动门套滑动门css,CSS 实现滑动门的实例代码
  11. wso2 esb 配置mysql_wso2esb安装及helloworld
  12. 函数名或方法名前加下划线 python
  13. 一个完整推荐系统的设计实现-以百度关键词搜索推荐为例
  14. linux系统文件制作编译器,制作mipsel-linux交叉编译工具
  15. 令人头痛的WH_CBT钩子,使窗口前置——泪水+汗水的赞歌
  16. 携程面试官问我怎么划分 Java 虚拟机内存区域,相见恨晚!
  17. Linux脚本的制作命令
  18. R语言List列表和向量Vector互相转化源码和思路
  19. Windows系统如何部署Rabbit和启动Rabbit服务
  20. IPv6都有哪些地址

热门文章

  1. 模拟新浪微博自动登陆
  2. 联想笔记本e43l_联想昭阳E43L电脑配置
  3. 2020年信创产品测试结果
  4. Ubuntu 安装字体
  5. Linux课程设计每日小结
  6. 我的个人网站,终于上线了!
  7. 关于IE读取缓存页面不刷新解决方法
  8. 手把手系列-从零开始手把手教你前后分离网站
  9. 梵高画作再现?努比亚AI新旗舰Z18携“地外科技”亮相
  10. SOME/IP与DDS对比及DDS测试策略和方案探讨