谁能把个税算法写成 代码

2019-01-22 21:34:46 +08:00
 frylkrttj

看大家争论的激烈,我来出个题。谁把这个 个税算法写成权威的代码出来 push 到 github 上去以后全国适用。xx 改一次算法就 push 一次有什么难的。

我坐等 V2EX 大叔亮代码,谁写的短又容易看懂,我想大家都会服气。

不限制编程语言,各位尽情发挥。

9263 次点击
所在节点    程序员
84 条回复
wdv2ly
2019-01-22 21:38:20 +08:00
详细计算方法不是有文档吗,有什么难的

https://oldrivers.cc/npit/index.html
frylkrttj
2019-01-22 21:48:04 +08:00
不弄成权威代码 push 出去 我看这事在 V2EX 三天一小吵,结果大家都没弄懂是怎么算得。我都看过好几个关于个税的帖子了。
FakeLeung
2019-01-22 21:48:24 +08:00
@wdv2ly 按照这个网页的来的话,我是增税了。。。。。
orangeade
2019-01-22 21:49:13 +08:00
947211232
2019-01-22 22:04:13 +08:00
小姐姐你很活跃啊,最近天天都发帖。。。要简陋 ss 不,这样你就不用天天发了。。。
hualongbei
2019-01-22 22:07:36 +08:00
@orangeade 你这个貌似和一楼的算法不一样,一楼的和我的工资表一致
frylkrttj
2019-01-22 22:11:16 +08:00
@947211232 害怕
947211232
2019-01-22 22:14:02 +08:00
@frylkrttj 哈哈哈,我也害怕小姐姐你比我还大 = =
frylkrttj
2019-01-22 22:14:56 +08:00
@947211232 亮代码
947211232
2019-01-22 22:23:42 +08:00
@frylkrttj 已经有现成的 web 计算器了,github 上也有代码,重点在于谁的更权威更官方
guog
2019-01-23 00:39:03 +08:00
@947211232 啥比你大你说清楚啊🐶🐶🐶
wemore
2019-01-23 01:09:04 +08:00
我司财务做了个 excel 输入工资可以看到税和税后工资(小声 bb:让你们财务也做个呗)
stuazt
2019-01-23 01:31:57 +08:00
这就跟你说:“谁写个小九九的代码来瞅瞅呗”是一个效果的,没人做是因为。。。完全没有技术含量,尤其是还有速算扣除数这种简化算法用来计算这个很基本的分段函数的情况下。。。
Spatherbst
2019-01-23 01:41:56 +08:00
<!doctype html>
<html>

<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="keywords" content="2019 个税,2019 新版个税计算器" />
<meta name="description" content="2019 新版个税计算器,可计算每月个税。" />
<title>2019 年个税计算器</title>
<style type="text/css">
body {
font-size: 13px;
}

input {
height: 15px;
width: 126px;
line-height: 15px;
padding: 1px;
font-size: 13px;
}

#head {
font-size: 14px
}

#line input {
width: 50px;
}

.error {
color: red;
}

.detail {
font-size: 12px
}
</style>
</head>

<body>
<h1>2019 年个税计算器</h1>
<table id="head">
<tr>
<th>税前工资</th>
<td><input id="gz" value="30000" /> 元 /月 <span class="error" style="display: none;">请输入工资,且必须大于 5000 元~</span></td>
</tr>
<tr>
<th>五险一金</th>
<td><input id="wxyj" value="3000" /> 元 /月</td>
</tr>
<tr>
<th>专项扣除</th>
<td><input id="zxkc" value="3000" /> 元 /月</td>
</tr>
<tr>
<td colspan=2 style="text-align: center;">
<button onclick="startWork()" style="width: 80%; margin-top: 10px;">开始计算</button> 
</td>
</tr>
</table>

<br />每月扣税(可调整各项额度)
<hr />

<table id="line"></table>

<br />扣税详情
<hr />
<div id="detail"></div>

<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
startWork();
$(window).bind('keypress', function (event) {
if (event.keyCode == "13") {
startWork();
}
})

function startWork() {
var gz = $("#gz").val();
if (!gz || gz < 5000) {
$(".error").show();
return;
}
$(".error").hide();


var wxyj = $("#wxyj").val() || 0;
var zxkc = $("#zxkc").val() || 0;
var html = '<tr class="title_line"><th>月份</th><th>税前工资</th><th>五险一金</th><th>专项扣除</th><th>个税</th><th>到手工资</th></tr>';
for (var i = 1; i <= 12; i++) {
html += '<tr id="line1">' +
'<td>' + i + '月</td>' +
'<td><input onchange="startCore()" id="gz' + i + '" value="' + gz + '" /></td>' +
'<td><input onchange="startCore()" id="wxyj' + i + '" value="' + wxyj + '" /></td>' +
'<td><input onchange="startCore()" id="zxkc' + i + '" value="' + zxkc + '" /></td>' +
'<td id="gs' + i + '"></td>' +
'<td id="dsgs' + i + '"></td>' +
'</tr>';
}
html += "<tr><td id='hj' colspan=6></td></tr>";
$("#line").html(html);
startCore();
}

function startCore() {
var gsTotal = 0;
var dsgzTotal = 0;
var detail = "";
for (var i = 1; i <= 12; i++) {
var gz = $("#gz" + i).val();
var wxyj = $("#wxyj" + i).val() || 0;
var zxkc = $("#zxkc" + i).val() || 0;
var gsed = gz * i - 5000 * i - wxyj * i - zxkc * i;
var rule = getRule(gsed);
var gs = Math.round(gsed * rule[0] - rule[1] - gsTotal);
$("#gs" + i).html("<strong>" + gs + "</strong>元");
$("#dsgs" + i).html("<strong>" + (gz - wxyj - gs) + "</strong>元");

detail += "<div>" + i + "月 (" + gz + "*" + i + " - 5000*" + i + " - " + wxyj + "*" + i + " - " + zxkc + "*" + i + ")*" + rule[0] + " - " + rule[1] + " - " + gsTotal + " = <strong>" + gs + "</strong>元</div>";
gsTotal += gs;
dsgzTotal += (gz - wxyj - gs);
$("#hj").html("<table><tr><td><strong>  个税合计:" + gsTotal + "元</strong></td><td><strong>   个税平均:" + Math.round(gsTotal / 12) + "元 /月</strong></td></tr><tr><td><strong>到手工资合计:" + dsgzTotal + "元</strong></td><td><strong> 到手工资平均:" + Math.round(dsgzTotal / 12) + "元 /月</strong></td></tr></table>");
}

$("#detail").html(detail);
}

function getRule(gsed) {
if (gsed <= 36000) {
return [0.03, 0];
}
if (gsed <= 144000) {
return [0.1, 2520];
}
if (gsed <= 300000) {
return [0.2, 16920];
}
if (gsed <= 420000) {
return [0.25, 31920];
}
if (gsed <= 660000) {
return [0.3, 52920];
}
if (gsed <= 960000) {
return [0.35, 85920];
}
if (gsed > 960000) {
return [0.45, 181920];
}
}
</script>
</body>
</html>
580a388da131
2019-01-23 01:44:38 +08:00
编程真的要数学。。。
murmur
2019-01-23 08:10:08 +08:00
你写了没用的 每个省都有自己的 APP
frylkrttj
2019-01-23 08:27:04 +08:00
@murmur #16 你这意思是说每个省算法都不一样吗?
airfling
2019-01-23 08:32:29 +08:00
public static void main(String[] args) {
//每月工资
double wages = 13000;
//专项扣除,没有的改为 0
double special = 2000D;
//起始线
double base = 5000D;
//总税
double allTax = 0D;
//每月税收
double monthTax = 0D;
//总工资
double allWages = wages * 12;
for (int i = 1; i <= 12; i++) {
double tmp = (wages - base - special) * i;
if (tmp < 36000) {
monthTax = tmp * 0.03 - allTax;
}
if (36000 <= tmp && tmp < 144000) {
monthTax = tmp * 0.1 - allTax - 2520;
}
if (144000 <= tmp && tmp < 300000) {
monthTax = tmp * 0.2 - allTax - 16920;
}
if (300000 <= tmp && tmp < 420000) {
monthTax = tmp * 0.25 - allTax - 31920;
}
if (420000 <= tmp && tmp < 660000) {
monthTax = tmp * 0.3 - allTax - 52920;
}
if (660000 <= tmp && tmp < 960000) {
monthTax = tmp * 0.35 - allTax - 85920;
}
if (tmp >= 960000) {
monthTax = tmp * 0.45 - allTax - 181920;
}
allTax += monthTax;
System.out.printf("当前%d 月份的税收为%.2f,当月剩余工资为%.2f\r\n", i, monthTax, wages - monthTax);
}
System.out.println("今年总工资为" + allWages + ",今年总税额度为" + allTax);
System.exit(0);
}
frylkrttj
2019-01-23 08:35:14 +08:00
@airfling #18 不知道是什么语言
frylkrttj
2019-01-23 08:37:39 +08:00
#18 看着像 c 但感觉从没见过这样的 c

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/529601

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX