工资税率算法

2019PHP高薪工程师学习路线图....>>>

#税率算法kk
#张总的年终奖为48万元,算出的应纳税额为118625元,最终税后收入为36.1375万元。
#李总的年终奖为48.0001万元,应纳税额为140625.3元,最终税后收入为33.9376万元,反而比张总少了2.1999万元。 

#针对以上问题: kk的工资算法:
#设某省 月平均工资:pp
#月缴税系数下限:x1 
#月缴税系数上限:x2
#月缴税下限:f1=pp*x1
#月缴税上限:f2=pp*x2
#月工资:gz
#月税率:sl=(gz-ff)/f2
#税率最大值:sl_max(默认50% = 0.5)
#如果税率大于50%,按50%收取
#工资不能超过平均工资的月缴税系数上限倍(倍数可调节)
#月应缴税款:re

#比如某省
#pp=2900
#x1=1.3
#x2=11.0
#则 f1 = pp*x1 = 3480
#则 f2 = pp*x2 = 14500 
   
#测试数据:
class Fixnum
  def rou(n=2)
    self
  end
end
class Float
    def rou(n=2)
        (self*(10.0**n)).ceil / (10.0**n)
    end
end
$pp=2900 #某省平均工资2900
$x1=1.20689655172414 #月缴税系数下限:x1 (可调节,这个正好是3500起征)
$x2=22.0 #月缴税系数上限:x2,平均工资的11倍(可调 ) 
$f1=$pp*$x1 #月缴税下限额:f1=pp*x1
$f2=$pp*$x2 #月缴税上限额:f2=pp*x2

def r(gz)
  #算税率
  sl=(gz.to_f-$f1.to_f)/$f2.to_f
  sl=sl*(sl*3) if sl >0 
  sl=0 if sl <0
  sl=0.5 if sl > 0.5
  re=gz-gz*sl
  re=$f2 if re > $f2 #工资不能超过平均工资的月缴税系数上限倍(倍数可调节)
  print %Q(#{gz}\t #{sl.rou(4)}\t #{re.rou} \n)
end

#60个测试数据
print %Q(工资\t 税率\t 税后\n)
60.times{|x| 
  r(x*200+3000.0)
}

puts
#20个测试数据,2元间隔
print %Q(工资\t 税率\t 税后\n)
20.times{|x|
  r(x*2+3499.0)
}


工资     税率    税后
3000.0   0       3000.0
3200.0   0       3200.0
3400.0   0       3400.0
3600.0   0.0001  3599.911
3800.0   0.0003  3799.153
4000.0   0.0007  3997.523
4200.0   0.0013  4194.902
4400.0   0.0021  4391.172
4600.0   0.003   4586.212
4800.0   0.0042  4779.905
5000.0   0.0056  4972.132
5200.0   0.0072  5162.773
5400.0   0.009   5351.71
5600.0   0.011   5538.823
5800.0   0.0132  5723.995
6000.0   0.0155  5907.105
6200.0   0.0181  6088.036
6400.0   0.0209  6266.667
6600.0   0.0239  6442.881
6800.0   0.027   6616.558
7000.0   0.0304  6787.58
7200.0   0.034   6955.827
7400.0   0.0377  7121.181
7600.0   0.0417  7283.522
7800.0   0.0459  7442.732
8000.0   0.0502  7598.693
8200.0   0.0548  7751.284
8400.0   0.0595  7900.387
8600.0   0.0645  8045.883
8800.0   0.0696  8187.654
9000.0   0.075   8325.58
9200.0   0.0805  8459.543
9400.0   0.0863  8589.423
9600.0   0.0922  8715.102
9800.0   0.0984  8836.46
10000.0  0.1047  8953.379
10200.0  0.1113  9065.741
10400.0  0.118   9173.425
10600.0  0.1249  9276.313
10800.0  0.1321  9374.287
11000.0  0.1394  9467.227
11200.0  0.1469  9555.014
11400.0  0.1547  9637.53
11600.0  0.1626  9714.656
11800.0  0.1707  9786.272
12000.0  0.179   9852.26
12200.0  0.1875  9912.501
12400.0  0.1963  9966.875
12600.0  0.2052  10015.265
12800.0  0.2143  10057.551
13000.0  0.2236  10093.614
13200.0  0.2331  10123.336
13400.0  0.2428  10146.597
13600.0  0.2528  10163.278
13800.0  0.2629  10173.261
14000.0  0.2732  10176.427
14200.0  0.2837  10172.657
14400.0  0.2944  10161.832
14600.0  0.3053  10143.832
14800.0  0.3164  10118.54

工资     税率    税后
3499.0   0       3499.0
3501.0   0.0001  3501.0
3503.0   0.0001  3503.0
3505.0   0.0001  3505.0
3507.0   0.0001  3507.0
3509.0   0.0001  3509.0
3511.0   0.0001  3510.999
3513.0   0.0001  3512.999
3515.0   0.0001  3514.999
3517.0   0.0001  3516.998
3519.0   0.0001  3518.997
3521.0   0.0001  3520.997
3523.0   0.0001  3522.996
3525.0   0.0001  3524.995
3527.0   0.0001  3526.994
3529.0   0.0001  3528.993
3531.0   0.0001  3530.992
3533.0   0.0001  3532.991
3535.0   0.0001  3534.99
3537.0   0.0001  3536.989