新个税计算html、以及java源代码
前⾔
2019年1⽉1⽇起,新个税改⾰正式全⾯实施,个税按照年累计的⽅式计算,个税改⾰与⼤家⼯资息息相关,所以闲来⽆事⽤jsp和java代码实现新个税计算。
⼀、html格式
直接⽤html格式的话,不⽤服务器部署,直接浏览就可以打开了。请忽略格式,代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>个⼈所得税计算器</title>
<script>
window. quickRateText = '{"3":0,"10":2520,"20":16920,"25":31920,"30":52920,"35":85920,"45":181920}';
//全局变量速算扣除数据
window.quickRate = window.JSON.parse(quickRateText);
window.rateText = '{"3":36000,"10":144000,"20":300000,"25":420000,"30":660000,"35":960000,"45":999999999}';
//全局变量税率
window.rate = window.JSON.parse(rateText);
function cal(){//开始计算
var arr=new Array();
arr[0]= ElementById("TaxSalary").value;
arr[1]= ElementById("Insurance").value;
arr[2]= ElementById("Special").value;
arr[3]= ElementById("Month").value;
for (var i=0;i<arr.length;i++)
{
checkdata(arr[i]);//数据校验
}
CheckMonth(arr[3]) ;//⽉份校验
var totalPay=0;//缴税累计⾦额
var taxPay=0;//本⽉应缴税额
for(var i=1;i<=arr[3];i++){
var TaxMoney=(arr[0]-arr[1]-arr[2]-5000)*i;
if(TaxMoney<0){ //不⽤交税
return;
}
var taxRateString=getTaxRate(TaxMoney);
var taxRate=taxRateString/100;
var quickData= quickRate[taxRateString];
totalPay=totalPay+taxPay;
taxPay=TaxMoney*taxRate-quickData-totalPay;
适应税率: "+taxRate+" 速算扣除数: "+quickData+ " 往⽉缴税⾦额: "+Fixed(2)+" 本⽉应缴税额: "+Fixed(2)+"</p>";
}
}
function getTaxRate(value) {//根据需要交税的⾦额获取相应的税率
if(value<0) return 0;
for (var prop in rate){
if(value<=rate[prop])
return    prop ;
}
}
function checkdata(value){
CheckIsNull(value);
if (isNaN(value)) {//⽤isNaN开始判断,如果成⽴就是⾮数字
if (isNaN(value)) {//⽤isNaN开始判断,如果成⽴就是⾮数字
alert("请输⼊正确的数值");
return false;
}
var len1 = value.substr(0,1);
var len2 = value.substr(1,1);
//如果第⼀位是0,第⼆位不是点,就⽤数字把点替换掉
if(value.length > 1 && len1==0 && len2 != '.'){
alert("请输⼊正确的数值");
return false;
}
if(value<0){
alert("请输⼊⼤于或者等于0的正确的数值");
return false;
}
}
function checkdata_Onblur(obj){//输⼊框失去焦点数据校验
var value=obj.value;
CheckIsNull(value);
if (isNaN(value)) {//⽤isNaN开始判断,如果成⽴就是⾮数字
alert("请输⼊正确的数值");
return false;
}
var id= obj.id;
if(id=="Month"){
CheckMonth(value);
}
var len1 = value.substr(0,1);
var len2 = value.substr(1,1);
//如果第⼀位是0,第⼆位不是点,就⽤数字把点替换掉
if(value.length > 1 && len1==0 && len2 != '.'){
alert("请输⼊正确的数值");
return false;
}
if(value<0){
alert("请输⼊⼤于或者等于0的正确的数值");
return false;
}
}
function CheckMonth(value){//⽉份校验
var len1 = value.substr(0,1);
if(value.length >= 1 && len1==0 ){
alert("请输⼊正确的⽉份");
return false;
}
if(value.indexOf(".")>0){
alert("⽉份不能是⼩数,请重新输⼊正确的⽉份");
return false;
}
}
function CheckIsNull( value){//⾮空校验
if (value==null||value==""){
alert( "数据不能为空!请重新输⼊");
return false;
}
}
</script>
</head>
<body>
<div ><p><span >个税计算器</span>  </p></div>
<form action="form_action.asp" method="get">
<div > <p><span >每⽉税前⼯资:</span><input  id="TaxSalary" onblur="ch eckdata_Onblur(this)" name="TaxSalary" required /> </p>
eckdata_Onblur(this)" name="TaxSalary" required /> </p>
<p><span >五险⼀⾦扣除⾦额:</span><input  id="Insurance"  onblur="checkdata_Onblur(this)" na me="Insurance" /> </p>
<p><span >专项扣除⾦额:</span><input  id="Special"  onblur="checkdata_Onblur(this)" name="S pecial" /> </p>
<p><span >⽉份(1-12):</span><input  id="Month" onblur="checkdata_Onblur(this)" name="Month " /> </p>
<p><button type="button" onclick="cal()">开始计算</button> </p>
</div>
<div  id="result"></div>
</form>
</body>
</html>
效果如下:
可以看到,⽉薪1w有专项扣除和没有专项扣除交税情况差别还是挺⼤的。⼆、java代码
import java.util.Scanner;
public class CalcRate {
public static final double base = 5000.00;// 纳税基准
static double rateAmount = 0;// 每⽉税额
static double beforeAmount = 0;// 税前⾦额
static double totlerate = 0;// 累计税额
static double[] rate;// 税率
static double p = 0;// 专项扣除
static double q = 0;// 速算扣除
static double n = 0;// 五险⼀⾦扣除
static int month = 1;// ⽉份
static double[][] rates = { { 0, 0, 0 }, { 36000, 0.03, 0 },
{ 144000, 0.1, 2520 }, { 3000000, 0.2, 16920 },
{ 420000, 0.25, 31920 }, { 660000, 0.3, 52920 },
{ 960000, 0.35, 85920 }, { 999999999, 0.45, 181920 } };
public static double[] getRate(double totale) {
double[] rate = { 36000, 0.03, 0 };
for (int i = 1; i < rates.length; i++) {
if (totale <= rates[0][0]) {
rate = rates[0];
} else if (totale > rates[i - 1][0] && totale <= rates[i][0]) {    rate = rates[i];
break;
}
}
return rate;
}
public static double inputDouble(String message) {
double input = -1;
while (true) {
System.out.println(message);
try {
Scanner in = new Scanner(System.in);
input = in.nextDouble();
} catch (Exception e) {
}
if (input < 0) {
System.out.println("请输⼊⼀个正数值..");
} else {
break;
}
}
return input;
}
public static int inputMonth() {
int input = -1;
while (true) {
asp 源代码System.out.println("请输⼊⽉份:");
try {
Scanner in = new Scanner(System.in);
input = in.nextInt();
} catch (Exception e) {
}
if (input < 1 || input >12) {
System.out.println("请输⼊⼀个正确⽉份..");

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。