看大家争论的激烈,我来出个题。谁把这个 个税算法写成权威的代码出来 push 到 github 上去以后全国适用。xx 改一次算法就 push 一次有什么难的。
我坐等 V2EX 大叔亮代码,谁写的短又容易看懂,我想大家都会服气。
不限制编程语言,各位尽情发挥。
1
wdv2ly 2019-01-22 21:38:20 +08:00 5
|
2
frylkrttj OP 不弄成权威代码 push 出去 我看这事在 V2EX 三天一小吵,结果大家都没弄懂是怎么算得。我都看过好几个关于个税的帖子了。
|
4
orangeade 2019-01-22 21:49:13 +08:00 via Android
|
5
947211232 2019-01-22 22:04:13 +08:00
小姐姐你很活跃啊,最近天天都发帖。。。要简陋 ss 不,这样你就不用天天发了。。。
|
6
hualongbei 2019-01-22 22:07:36 +08:00 1
@orangeade 你这个貌似和一楼的算法不一样,一楼的和我的工资表一致
|
12
wemore 2019-01-23 01:09:04 +08:00 via iPhone
我司财务做了个 excel 输入工资可以看到税和税后工资(小声 bb:让你们财务也做个呗)
|
13
stuazt 2019-01-23 01:31:57 +08:00
这就跟你说:“谁写个小九九的代码来瞅瞅呗”是一个效果的,没人做是因为。。。完全没有技术含量,尤其是还有速算扣除数这种简化算法用来计算这个很基本的分段函数的情况下。。。
|
14
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> |
15
580a388da131 2019-01-23 01:44:38 +08:00 via iPhone
编程真的要数学。。。
|
16
murmur 2019-01-23 08:10:08 +08:00
你写了没用的 每个省都有自己的 APP
|
18
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); } |
20
frylkrttj OP #18 看着像 c 但感觉从没见过这样的 c
|
26
adminsam 2019-01-23 08:54:23 +08:00 via Android 2
沉贴好好上学吧…这是大人的事情
|
28
huluhulu 2019-01-23 09:06:36 +08:00 via iPhone
@frylkrttj 不是的,个人可以不交。但是绝大多数上班族的税前工资包含这两项。这两项支出不需要缴纳个税,需要扣除。
|
29
frylkrttj OP #28 原来扣除是 来自社保跟公积金这些 。
|
30
passerbytiny 2019-01-23 09:18:39 +08:00
难道在代码的权威性上,以及有可能出现的哪种语言的代码更牛逼上,讨论不比现在更激烈?
|
31
frylkrttj OP @huluhulu 不对不对,如果有买社保公积金就享受扣除,那比如外面街头开店的那些不买社保公积金,缴税没有享受扣除。那结果不等于比前面的人多缴了,结果等于还是买了吧。
|
32
RBill 2019-01-23 09:20:54 +08:00 via Android
应该是每改一次算法开一个分支,把以前的算法留着
|
33
Raisu 2019-01-23 09:32:14 +08:00
绝对赞成,那些讨论和新闻看得我头疼
|
34
huluhulu 2019-01-23 09:35:10 +08:00 via iPhone
@frylkrttj 社保和公积金是独立于起征点扣除和专项扣除的。但是他的点比较高,一般相当于税前工资的 20%左右。比个税交的点高多了。自由工作者怎么交就看自己权衡了。
|
35
Muniesa 2019-01-23 09:37:54 +08:00 via Android
虽然楼主 ID 不好记,但是我知道我每天都能见到楼主的帖子……
|
36
sdijeenx 2019-01-23 09:57:57 +08:00
如果不考虑新税法第一、二、四、五、七、八、九至十六、十八至二十二条的话,这不就是分段函数编程题么?所以这是 LZ 学校留的作业自己写不出来所以上 V2 问答案吧。大家都别发代码,给它提示就好了=3=
|
38
linora 2019-01-23 10:23:00 +08:00
占位
|
39
adminsam 2019-01-23 10:29:24 +08:00
发现 [《感觉“就差一个程序员了”其实不是个笑话》]( https://www.v2ex.com/t/528677#reply76) 这贴出自楼主,我就菊花一紧
|
40
frylkrttj OP 我想自己写一个但不知道怎么算,那些扣除什么的不知道怎么来的,所以问问清除。
|
41
CoderGeek 2019-01-23 10:45:48 +08:00
= = github 上有的 不过个人情况不一样
|
43
amwyyyy 2019-01-23 10:55:54 +08:00
1 楼的非常精准
|
44
oahoaix 2019-01-23 11:12:34 +08:00
|
45
DovaKeen 2019-01-23 11:43:04 +08:00
这也许可以开发个小程序什么的,感觉上会有很多人用啊,而且还能搜集一下用户的收入信息。
|
46
asyqm 2019-01-23 14:42:56 +08:00
@frylkrttj 缴纳社保是“义务”,不是你想不交就不交的。你说的没错,就是强买强卖,要不然你退休了谁给你发工资?你病了去医院谁给你掏医保部分?
你说的那些开店的,第一你知道他们不交社保吗?第二你听说过谁不缴纳社保只交个税吗?干脆直接告诉社保中心(未来是税务局)你逃避社保义务呗。。。 |
47
frylkrttj OP @asyqm 社保不就是一个保险种类的产品吗,哪来的义务。被强交的都是公司上班的吧,外面自己开店做小买卖的会交这些?再说也不是每个人都指望国家养老。
再说还有其他商业保险,我用的是我爸的电话,隔几天都能收到平安的推销保险的短信。 |
48
frylkrttj OP @asyqm 缴税可以理解,有收入就交没收入就不交。
强交社保我就想不同了,而且听说社保是要不能断的。但每个人收入会断啊,比如一个人有收入的时候交了一段时间的社保,后面开始没收入了。那还拿什么交社保,不交完多少年老了又领不到钱。 |
49
frylkrttj OP |
50
asyqm 2019-01-23 15:34:32 +08:00
@frylkrttj 制度就是制度。对于你有能力缴纳公积金的,一定是单位工作,那给你上社保就是公司义务,相应的对你来说就是义务。外面开店做小买卖的,可以以个体户或者自由职业身份缴纳,当然此时是自愿的,取决于你希不希望“拿退休金”以及去医院有“医保待遇”。要知道,有资格“退休”,60/65 岁之后才有资格继续享受“医保”
社保不能断是部分城市在其他行为时增加的一些限制行为,比如北京买房买车要求连续 5 年的不中断社保记录,并不是社保本身的规定。社保关于养老金的要求为累计缴纳满 15 年即可有养老金的资格。缴纳越久,养老金相应越高。 中断社保两种情况,一种是你说的,无业,没钱交,那让你交你也交不了啊。你的问题毫无意义。 一种是你还有追求,还打算有下一份工作,不想中断,那就以个人名义自己去社保中心交。以保证社保的连续性。 另外,别拿社保和商业保险比,一个是社会保障制度,一个是盈利性赚钱的玩意,能比么?社保缴纳是有上限的,你自己算算每个月交多少钱社保,算算每年自己开销多少医疗费,预估一下到 60 岁退休大概,然后 60 岁到 XX 岁的退休金,以及每年的医疗报销。再回头看看哪个保险或者理财的回报率有这么高。 不知道你现在的年龄多大,看你对社保还需要百度查,应该毕业不久。那你对自己工作 15 年都没有信心,我只能表示无语。 我说的都是“正常情况”,请不要拿特殊情况来争论。这个世界上不是只有黑和白。 |
51
asyqm 2019-01-23 15:37:14 +08:00
@frylkrttj 别看现在你总听谁说不指望国家养老。等到 60 岁,真正能财务自由,搞定未来 20-30 年生活医疗开销,我相信,绝不是大部分群体。绝大多数人,还是要靠国家社保每月发的几千块工资和医疗保险来生活的。
|
52
frylkrttj OP @asyqm 假设一个人 23 岁参加工作 一路漂泊 累计交满 15 年社保,此时 40 岁。又要等到 60 岁才能享受社保养老 ? 那中间还有 20 年不是白交了?
|
54
LxRuzx 2019-01-23 16:12:05 +08:00
推荐使用美团 app 我的 最下面有一个 新个税计算 就可以直接计算
|
56
shm7 2019-01-23 16:47:26 +08:00
其实只要有了应税额,那么算是很简单的,我算过。
问题就在应税额每个公司、城市因为操作手法不同都不同。 |
60
asyqm 2019-01-23 17:05:46 +08:00
@frylkrttj 交的越多,退休拿的越多。如果我没记错,医保也是有缴纳年限要求的好像。按你说的,40 岁到 60 岁,你都不工作,且你也没按个人缴纳,那也没交钱啊,你白交啥了?如果你工作了,或者以个人名义交了,那到退休就会增加你拿的钱的啊。。。
没理解你的逻辑 |
61
asyqm 2019-01-23 17:06:50 +08:00
@laike9m 新人新办法,老人老办法。再说,PRC 有啥拿不出来的?你没看东北的社保基金已经空了么?但是你听说耽误谁发养老金了?
|
63
frylkrttj OP 难道不应该是:
if ( 收入> 起征点){ pintf ("所缴=收入*税率") } else { pintf ("低收入人群不符合纳税条件") } |
64
frylkrttj OP 修正#63+加扣除项:
难道不应该是: if ( 收入> 起征点){ pintf ("所缴=(收入-起征点)*税率 - 扣除项") } else { pintf ("低收入人群不符合纳税条件") } |
67
asyqm 2019-01-23 17:52:21 +08:00
@laike9m 我对 TG 领导的 PRC 有信心。中国好歹经济还没负增长吧?为啥就没信心了?而且假如你是大公司码农,基本已经在全国富裕的 10%阶层之内了,别太妄自菲薄了……
|
68
shm7 2019-01-23 18:53:15 +08:00 via iPhone
@frylkrttj 嘛勒。老哥你还是了解下基本的扣除理念再来想想怎么写吧。应税额是需要交税的额度,工资-各种社保公积金今年的辅助扣除来的;我司能给到这个应税额,和交了多少税。
恐怕 v2ers 前几天的争吵都是不去看看章程、文档,就来大肆撕逼的吧。 我无 fuck 说。 |
69
shm7 2019-01-23 19:00:23 +08:00 via iPhone
@asyqm 应税额不是你这么算的,你这已经是税额了。应税额是要交税的那部分工资。
新的税务体系不需要速算扣除什么,有了应税额,每个月就可以累计;累计低于 36000,按每个月工资*税率 3%; else 累计低于 144000,按 10%的比率交。 |
70
shm7 2019-01-23 19:02:14 +08:00 via iPhone
如上,基本就是一个累积应税额的 loop,小学生都会写的程序。真不明白都在吵什么。
|
71
frylkrttj OP |
77
atonku 2019-01-24 08:38:00 +08:00
不够起征点的路过
|
78
luozhsky 2019-01-24 12:08:18 +08:00
http://owncloud.goubuli.online/index.php/s/ZFRvYPwH8LkRpFT/download
@wemore 我做的 excel 计算的。。。加了个调薪变税的按钮。。。 |
79
shm7 2019-01-24 13:41:58 +08:00
@frylkrttj 所以说,作为一个程序员,还会被这种问题吵的面红耳赤,还有一大波所谓程序员来看热闹,却连基本税收规则都搞不清的。我真是觉得叫我程序员简直是在贬低我。
|
80
shm7 2019-01-24 13:46:22 +08:00
作为贴主,发这种帖子,连税收基本规则都搞不懂,我真的觉得你可能真的搞不清楚程序是个什么东西。你的这种啥都不懂,就叫人家来写程序,这分明是搞不懂什么叫开源。这么个不算难的问题,一大波人讨论,我不得不说 lz 的组织能力真是堪忧,讨论半天还就是相互撕逼。
其实我只是好心点进来给个 hint,以往都是有感谢的;看来以后碰到这样的帖子,应该还是直接回避掉了。不谢。不再回复。 @all 是个程序员,就先好好了解下我们收税的计算方式,再来想着怎么算;规则都不懂,写的不论是什么代码,都只可能是错的。 |
81
luozhsky 2019-01-24 15:53:49 +08:00 1
@shm7 老哥心态放松。我研究规则下来实际上还是有速算扣除数这东西的。。在计算单月还是年终校验(跳槽之后如果不提供之前交税记录的话会,新公司是从 0 计算的,年底需要自行校验申报补缴)的时候都会用到。。你可以看看我那个表格。。还有年中调薪(跳槽)和扣减的纳税计算方式。。
|