| | |
| | | // 当X>4000时 |
| | | //(1)当X*(1-20%)<=20000时,个税T=X*(1-20%)*20% |
| | | if (money.doubleValue() > 4000 && multiply.doubleValue() <= 20000) { |
| | | taxMoney = multiply.multiply(new BigDecimal(0.8)); |
| | | taxMoney = multiply.multiply(new BigDecimal(0.2)); |
| | | } |
| | | |
| | | //(2)当20000<X*(1-20%)<=50000时,个税T=X*(1-20%)*30%-2000 |
| | |
| | | return format; |
| | | } |
| | | |
| | | /** |
| | | * 通过税后工资,算出税前工资 |
| | | * |
| | | * @param money |
| | | * @return |
| | | */ |
| | | public static String getTaxationBefore(BigDecimal money) { |
| | | //当X<=800时,个税T=0 |
| | | BigDecimal taxMoney = new BigDecimal(0.0); |
| | | |
| | | if (money.doubleValue() > 800 && money.doubleValue() <= 3360) { |
| | | taxMoney = money.divide(new BigDecimal(0.2),2,BigDecimal.ROUND_DOWN).add(new BigDecimal(800)); |
| | | } |
| | | |
| | | if (money.doubleValue() > 3360 && money.doubleValue() <= 21000) { |
| | | taxMoney = money.divide(new BigDecimal(0.84),2,BigDecimal.ROUND_DOWN); |
| | | } |
| | | |
| | | if (money.doubleValue() > 21000 && money.doubleValue() <= 40000) { |
| | | money = money.subtract(new BigDecimal(2000)); |
| | | taxMoney = money.divide(new BigDecimal(0.76),2,BigDecimal.ROUND_DOWN); |
| | | } |
| | | |
| | | if (money.doubleValue() > 40000) { |
| | | money = money.subtract(new BigDecimal(7000)); |
| | | taxMoney = money.divide(new BigDecimal(0.68),2,BigDecimal.ROUND_DOWN); |
| | | } |
| | | |
| | | |
| | | DecimalFormat decimalFormat = new DecimalFormat("#.00"); |
| | | String format = decimalFormat.format(taxMoney); |
| | | return format; |
| | | } |
| | | |
| | | |
| | | public static void main(String[] args) { |
| | | String taxation = getTaxation(new BigDecimal(70000)); |
| | | System.out.println(taxation); |
| | | String taxation = getTaxation(new BigDecimal(21000)); |
| | | String taxationBefore = getTaxationBefore(new BigDecimal(52000)); |
| | | |
| | | |
| | | System.out.println(taxation + " " + taxationBefore); |
| | | } |
| | | |
| | | } |