工作之余计算下等额本金、等额本息、利息差额

9月25日开始,央行明确降低存量房贷利率,对于高位站岗的房贷者即是重大利好政策,工作之余,计算下还需搬多少砖头^_^

等额本息

public void annuity(){
        double money = 317079.76-1521.62;//贷款额
        double yearLv = 4.2/100;//年化
        double monthLv = yearLv/12;//月化
        int month = 149;//月数
        double totalMonth = new BigDecimal(money*monthLv*Math.pow((1+monthLv),month)/(Math.pow(1+monthLv,month)-1)).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
        System.out.println("每月还款额:" + totalMonth);
        double sumLx = 0;
        double sumBj = 0;
        for(int i = 1; i <= month; i++){
            double perLx = money * monthLv;//每月利息
            double perBj = totalMonth - perLx;//每月本金
            money = money - perBj;
            sumLx = sumLx+perLx;
            sumBj = sumBj+perBj;
            System.out.println("第"+i+"月还款本金:" + new BigDecimal(perBj).setScale(2,BigDecimal.ROUND_HALF_UP)+",还款利息:"+new BigDecimal(perLx).setScale(2,BigDecimal.ROUND_HALF_UP));
        }
        System.out.println("总息额" + sumLx);
}

等额本金

public void linear(){
        double money = 317079.76-1521.62;//贷款额
        double total = money;
        int month = 149;
        BigDecimal perBj = new BigDecimal(money/month).setScale(2,BigDecimal.ROUND_HALF_UP);
        BigDecimal sumLx = BigDecimal.ZERO;
        for(int i = 0; i < month; i++){
            BigDecimal multiply = perBj.multiply(new BigDecimal(i));
            total = money-multiply.doubleValue();
            BigDecimal perLx = new BigDecimal(total * (4.2/100 / 12)).setScale(2,BigDecimal.ROUND_HALF_UP);
            sumLx = sumLx.add(perLx);
            System.out.println("第"+(i+1)+"月还款:"+perBj.add(perLx)+",本金:"+perBj+",利息:"+perLx);
        }
        System.out.println("总息额:"+sumLx);
}

你可能感兴趣的:(java,servlet)