`

新个税计算类

 
阅读更多
/*
 * 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

1
0
分享到:
评论

相关推荐

    个人所得税计算

    个人所得税计算是涉及每个公民日常生活中的一项重要财务知识,它涉及到如何根据收入情况来合理、合法地计算应缴纳的税款。在中国,个人所得税的计算方法主要包括综合所得、工资、薪金所得、个体工商户生产、经营所得...

    新个人所得税计算方法

    ### 个人所得税计算方法 #### 普通工资薪金所得应纳税额计算 个人所得税采用超额累进税率的方式进行征收,具体税率及速算扣除数如下表所示: | 应纳税所得额 | 税率 | 速算扣除数 | |----------|------|--------|...

    2022个人所得税计算方法个人所得税计算公式知识.pdf

    "个人所得税计算方法知识" ...个人所得税计算方法包括免征额的变化、应纳税所得额的变化、速算扣除数的变化、个税改革的影响、专项扣除项目、个税改革的实施、个税计算公式和个税计算步骤等知识点。

    java个人所得税计算程序

    java 个人所得税计算程序 1.1. 类名:IncomeTax 1.1.1. 类描述 程序入口类,完成菜单显示、输入、回显、计算个人所得税、修改相关计算参数的总调度。 1.1.2. 类成员变量 1) private static TaxTable tt //税率表 ...

    JAVA计算个人所得税精简版

    2. **类设计**:个人所得税计算通常会封装在一个或多个类中,比如`IncomeCalculator`类,用于处理各种收入类型和税率的计算。类的设计应遵循单一职责原则,使每个类专注于特定的计算任务。 3. **税收计算逻辑**:...

    个人所得税计算程序

    《个人所得税计算程序详解》 个人所得税计算程序是一款旨在帮助用户快速、准确计算个人所得税的工具,它简化了复杂的税法规定,使普通用户也能轻松理解并应用。在这个程序中,我们将探讨其基本原理、计算方法以及...

    使用Java计算个人所得税

    #### 二、个人所得税计算规则 根据题目给出的描述,个人所得税的计算规则如下: 1. **免税线:** 当月收入不超过3500元时,无需缴纳个人所得税。 2. **第一档税率:** 当月收入超过3500元但不超过5000元时,应纳税...

    个人所得税简单计算程序

    1. **收入类型识别**:个人所得税计算时需要区分工资、劳务报酬、稿酬、特许权使用费等不同类型的收入,每种收入可能有不同的税率和预扣预缴规则。程序会根据输入的收入类型进行相应的计算。 2. **基本扣除费用**:...

    基于JUnit4的关于个人所得税计算的等价类与边界值分析黑盒测试和路径覆盖白盒测试

    本实验主要关注的是基于JUnit4的测试技术,包括黑盒测试中的等价类划分和边界值分析,以及白盒测试中的路径覆盖方法,用于验证个人所得税计算的逻辑。下面将详细介绍这些测试策略及其在实践中的应用。 首先,我们来...

    个人所得税计算方法

    个人所得税计算方法是每个纳税人必须了解的基本财务知识之一,它涉及到如何根据个人收入来确定应缴纳的税款。在中国,个人所得税的计算采用累进税率制度,即收入越高,适用的税率也越高。以下是根据提供的文件内容,...

    工资及个税计算模板(根据2018年修订的个人所得税法).xlsx

    工资及个税计算模板(根据2018年修订的个人所得税法).xlsx 工资及个税计算模板(根据2018年修订的个人所得税法).xlsx 工资及个税计算模板(根据2018年修订的个人所得税法).xlsx 工资及个税计算模板(根据2018年...

    计算个人所得税的程序

    【个人所得税计算程序详解】 个人所得税是每个公民根据其收入水平向国家缴纳的一种税费,它在社会经济活动中扮演着重要角色。本程序包是专为计算个人所得税设计的,使用了MATLAB编程语言,能够随机生成所得收入,并...

    C# 最新个人所得税计算公式

    C# 最新个人所得税计算公式

    个人所得税计算算法.doc

    个人所得税计算算法 个人所得税计算算法是指根据个人月收入额减去八百元后的余额,按照不同级数的税率计算应纳税额的方法。在九级累进制个人所得税计算中,首先需要将个人月收入额减去八百元,得到应纳税所得额,...

    个税最新计算工具

    《个人所得税计算详解及其最新工具应用》 个人所得税(简称个税)是国家对公民、居民企业以及其他组织取得的各种所得征收的一种税款。随着经济的发展和政策的调整,个税计算方式也在不断更新,这对于纳税人来说,...

    个人所得税收计算java入门程序

    在Java编程领域,个人所得税计算是一项常见的应用,它涉及到金融计算和税务知识的结合。本程序是为初学者设计的,旨在帮助他们了解如何利用Java语言处理实际问题,特别是涉及数学计算的问题。在这个"个人所得税收...

    个人所得税计算方法.pdf

    1. 工资个税计算:应纳税所得 = 工资应发合计 - 3900 - 公积金 - 医疗保险 - 社保 - 职业年金,然后使用相应的税率和速算扣除数计算个人所得税。 2. 零星收入个税计算:将零星收入加总,减去已扣除的工资个税,再...

    个人所得税计算表计算方法

    4. **使用个人所得税计算表**:“个人所得税计算表.xls”是一个方便的工具,它列出了各个税率区间、税率和速算扣除数,用户只需输入应纳税所得额,表格会自动计算出应缴纳的个人所得税。此外,该表格还可以帮助用户...

    个人所得税计算器 android

    个人所得税计算涉及到一系列公式,例如,中国个税计算通常采用累进税率,需要根据年度综合所得、专项扣除、税率表进行计算。开发者需要了解并实现这些计算规则,确保结果准确。这可能涉及到对收入、五险一金、专项...

    个人所得税计算程序vb源码

    本篇文章将详细解析“个人所得税计算程序”的VB源码,帮助读者深入理解个税计算逻辑,并提升VB编程技能。 首先,我们需要了解个人所得税的基本计算规则。在中国,个人所得税是根据收入额和税率表进行计算的,通常...

Global site tag (gtag.js) - Google Analytics