/*
* Copyright (C), 2002-2018, song
* FileName: PersonalIncomeTaxUtil.java
* Author: feng
* Date: 2018年6月19日 下午2:01:18
* Description: //模块目的、功能描述
* History: //修改记录
* <author> <time> <version> <desc>
* 修改人姓名 修改时间 版本号 描述
*/
package com.feng.test;
import java.math.BigDecimal;
/**
* 〈个税计算工具类〉<br>
* 〈个税计算工具类〉
*
* @author feng
* @see [相关类/方法](可选)
* @since [产品/模块版本] (可选)
*/
public final class PersonalIncomeTaxUtil {
/**
* 旧个税起征点
*/
private static int OLD_TAX_THRESHOLD = 3500;
/**
* 新个税起征点
*/
private static int NEW_TAX_THRESHOLD = 5000;
/**
* 私有构造方法
*/
private PersonalIncomeTaxUtil()
{
}
/**
* 旧个税计算方案: <br>
* 〈旧个税计算方案〉
*
* @param amt
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static Double oldTaxCalculate(Double amt)
{
System.out.print(amt + "==");
BigDecimal taxAmt = new BigDecimal(amt).subtract(BigDecimal.valueOf(OLD_TAX_THRESHOLD));
if(taxAmt.compareTo(new BigDecimal("0")) <= 0)
{
return new BigDecimal("0.00").doubleValue();
}else if(taxAmt.compareTo(new BigDecimal("1500")) <= 0){
return taxAmt.multiply(BigDecimal.valueOf(0.03))
.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
}else if(taxAmt.compareTo(new BigDecimal("4500")) <= 0){
return taxAmt.multiply(BigDecimal.valueOf(0.1)).subtract(BigDecimal.valueOf(105))
.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
}else if(taxAmt.compareTo(new BigDecimal("9000")) <= 0){
return taxAmt.multiply(BigDecimal.valueOf(0.2)).subtract(BigDecimal.valueOf(555))
.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
}else if(taxAmt.compareTo(new BigDecimal("35000")) <= 0){
return taxAmt.multiply(BigDecimal.valueOf(0.25)).subtract(BigDecimal.valueOf(1005))
.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
}else if(taxAmt.compareTo(new BigDecimal("55000")) <= 0){
return taxAmt.multiply(BigDecimal.valueOf(0.30)).subtract(BigDecimal.valueOf(2755))
.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
}else if(taxAmt.compareTo(new BigDecimal("80000")) <= 0){
return taxAmt.multiply(BigDecimal.valueOf(0.35)).subtract(BigDecimal.valueOf(5505))
.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
}else{
return taxAmt.multiply(BigDecimal.valueOf(0.45)).subtract(BigDecimal.valueOf(13505))
.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
}
}
/**
* 新个税计算方案: <br>
* 〈新个税计算方案〉
*
* @param amt
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static Double newTaxCalculate(Double amt)
{
BigDecimal taxAmt = new BigDecimal(amt).subtract(BigDecimal.valueOf(NEW_TAX_THRESHOLD));
if(taxAmt.compareTo(new BigDecimal("0")) <= 0)
{
return new BigDecimal("0.00").doubleValue();
}else if(taxAmt.compareTo(new BigDecimal("3000")) <= 0){
return taxAmt.multiply(BigDecimal.valueOf(0.03))
.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
}else if(taxAmt.compareTo(new BigDecimal("12000")) <= 0){
return taxAmt.multiply(BigDecimal.valueOf(0.1))
.subtract(BigDecimal.valueOf(3000*(0.1-0.03)))
.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
}else if(taxAmt.compareTo(new BigDecimal("25000")) <= 0){
return taxAmt.multiply(BigDecimal.valueOf(0.2))
.subtract(BigDecimal.valueOf(3000*(0.2-0.03) + (12000-3000)*(0.2-0.1)))
.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
}else if(taxAmt.compareTo(new BigDecimal("35000")) <= 0){
return taxAmt.multiply(BigDecimal.valueOf(0.25))
.subtract(BigDecimal.valueOf(3000*(0.25-0.03) + (12000-3000)*(0.25-0.1) + (25000-12000)*(0.25-0.2)))
.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
}else if(taxAmt.compareTo(new BigDecimal("55000")) <= 0){
return taxAmt.multiply(BigDecimal.valueOf(0.30))
.subtract(BigDecimal.valueOf(3000*(0.30-0.03) + (12000-3000)*(0.30-0.1) + (25000-12000)*(0.30-0.2) + (35000-25000)*(0.30-0.25)))
.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
}else if(taxAmt.compareTo(new BigDecimal("80000")) <= 0){
return taxAmt.multiply(BigDecimal.valueOf(0.35))
.subtract(BigDecimal.valueOf(3000*(0.35-0.03) + (12000-3000)*(0.35-0.1) + (25000-12000)*(0.35-0.2) + (35000-25000)*(0.35-0.25) + (55000-35000)*(0.35-0.3)))
.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
}else{
return taxAmt.multiply(BigDecimal.valueOf(0.45))
.subtract(BigDecimal.valueOf(3000*(0.45-0.03) + (12000-3000)*(0.45-0.1) + (25000-12000)*(0.45-0.2) + (35000-25000)*(0.45-0.25) + (55000-35000)*(0.45-0.3) + (80000-35000)*(0.45-0.35)))
.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
}
}
public static void main(String[] args) {
System.out.println(oldTaxCalculate(5000d) + "-->" +newTaxCalculate(5000d));
System.out.println(oldTaxCalculate(8000d) + "-->" +newTaxCalculate(8000d));
System.out.println(oldTaxCalculate(10000d) + "-->" +newTaxCalculate(10000d));
System.out.println(oldTaxCalculate(13200d) + "-->" +newTaxCalculate(13200d));
System.out.println(oldTaxCalculate(14000d) + "-->" +newTaxCalculate(14000d));
System.out.println(oldTaxCalculate(23200d) + "-->" +newTaxCalculate(23200d));
System.out.println(oldTaxCalculate(50000d) + "-->" +newTaxCalculate(50000d));
System.out.println(oldTaxCalculate(100000d) + "-->" +newTaxCalculate(100000d));
}
}
页面版本请访问http://www.huacy.cn:9999/home.html
分享到:
相关推荐
个人所得税计算是涉及每个公民日常生活中的一项重要财务知识,它涉及到如何根据收入情况来合理、合法地计算应缴纳的税款。在中国,个人所得税的计算方法主要包括综合所得、工资、薪金所得、个体工商户生产、经营所得...
### 个人所得税计算方法 #### 普通工资薪金所得应纳税额计算 个人所得税采用超额累进税率的方式进行征收,具体税率及速算扣除数如下表所示: | 应纳税所得额 | 税率 | 速算扣除数 | |----------|------|--------|...
"个人所得税计算方法知识" ...个人所得税计算方法包括免征额的变化、应纳税所得额的变化、速算扣除数的变化、个税改革的影响、专项扣除项目、个税改革的实施、个税计算公式和个税计算步骤等知识点。
java 个人所得税计算程序 1.1. 类名:IncomeTax 1.1.1. 类描述 程序入口类,完成菜单显示、输入、回显、计算个人所得税、修改相关计算参数的总调度。 1.1.2. 类成员变量 1) private static TaxTable tt //税率表 ...
2. **类设计**:个人所得税计算通常会封装在一个或多个类中,比如`IncomeCalculator`类,用于处理各种收入类型和税率的计算。类的设计应遵循单一职责原则,使每个类专注于特定的计算任务。 3. **税收计算逻辑**:...
《个人所得税计算程序详解》 个人所得税计算程序是一款旨在帮助用户快速、准确计算个人所得税的工具,它简化了复杂的税法规定,使普通用户也能轻松理解并应用。在这个程序中,我们将探讨其基本原理、计算方法以及...
#### 二、个人所得税计算规则 根据题目给出的描述,个人所得税的计算规则如下: 1. **免税线:** 当月收入不超过3500元时,无需缴纳个人所得税。 2. **第一档税率:** 当月收入超过3500元但不超过5000元时,应纳税...
1. **收入类型识别**:个人所得税计算时需要区分工资、劳务报酬、稿酬、特许权使用费等不同类型的收入,每种收入可能有不同的税率和预扣预缴规则。程序会根据输入的收入类型进行相应的计算。 2. **基本扣除费用**:...
本实验主要关注的是基于JUnit4的测试技术,包括黑盒测试中的等价类划分和边界值分析,以及白盒测试中的路径覆盖方法,用于验证个人所得税计算的逻辑。下面将详细介绍这些测试策略及其在实践中的应用。 首先,我们来...
个人所得税计算方法是每个纳税人必须了解的基本财务知识之一,它涉及到如何根据个人收入来确定应缴纳的税款。在中国,个人所得税的计算采用累进税率制度,即收入越高,适用的税率也越高。以下是根据提供的文件内容,...
工资及个税计算模板(根据2018年修订的个人所得税法).xlsx 工资及个税计算模板(根据2018年修订的个人所得税法).xlsx 工资及个税计算模板(根据2018年修订的个人所得税法).xlsx 工资及个税计算模板(根据2018年...
【个人所得税计算程序详解】 个人所得税是每个公民根据其收入水平向国家缴纳的一种税费,它在社会经济活动中扮演着重要角色。本程序包是专为计算个人所得税设计的,使用了MATLAB编程语言,能够随机生成所得收入,并...
C# 最新个人所得税计算公式
个人所得税计算算法 个人所得税计算算法是指根据个人月收入额减去八百元后的余额,按照不同级数的税率计算应纳税额的方法。在九级累进制个人所得税计算中,首先需要将个人月收入额减去八百元,得到应纳税所得额,...
《个人所得税计算详解及其最新工具应用》 个人所得税(简称个税)是国家对公民、居民企业以及其他组织取得的各种所得征收的一种税款。随着经济的发展和政策的调整,个税计算方式也在不断更新,这对于纳税人来说,...
在Java编程领域,个人所得税计算是一项常见的应用,它涉及到金融计算和税务知识的结合。本程序是为初学者设计的,旨在帮助他们了解如何利用Java语言处理实际问题,特别是涉及数学计算的问题。在这个"个人所得税收...
1. 工资个税计算:应纳税所得 = 工资应发合计 - 3900 - 公积金 - 医疗保险 - 社保 - 职业年金,然后使用相应的税率和速算扣除数计算个人所得税。 2. 零星收入个税计算:将零星收入加总,减去已扣除的工资个税,再...
4. **使用个人所得税计算表**:“个人所得税计算表.xls”是一个方便的工具,它列出了各个税率区间、税率和速算扣除数,用户只需输入应纳税所得额,表格会自动计算出应缴纳的个人所得税。此外,该表格还可以帮助用户...
个人所得税计算涉及到一系列公式,例如,中国个税计算通常采用累进税率,需要根据年度综合所得、专项扣除、税率表进行计算。开发者需要了解并实现这些计算规则,确保结果准确。这可能涉及到对收入、五险一金、专项...
本篇文章将详细解析“个人所得税计算程序”的VB源码,帮助读者深入理解个税计算逻辑,并提升VB编程技能。 首先,我们需要了解个人所得税的基本计算规则。在中国,个人所得税是根据收入额和税率表进行计算的,通常...