java月利率计算(等额本息贷款)

等额本息 每月还款计算公式:

每月本息金额 = (本金×月利率×(1+月利率)^还款月数)÷ ((1+月利率)^还款月数-1))

反转求出 月利率

月利率 如果根据上面公式反转是算不出来的。

下面给出一种计算方式具体是试出来的,从1开始 一次减少0.1,,减到0.1后,每次再减少,0.01 

public class NiTui {


    /**
     * 
     * rate:(这里用一句话描述这个方法的作用). <br/>
     * TODO(这里描述这个方法适用条件 – 可选).<br/>
     * TODO(这里描述这个方法的执行流程 – 可选).<br/>
     * TODO(这里描述这个方法的使用方法 – 可选).<br/>
     * TODO(这里描述这个方法的注意事项 – 可选).<br/>
     * */
    public static double rate(double a, double b, double c, int cnt, int ina) {
        double rate = 1, x, jd = 0.1, side = 0.1, i = 1;
        do {
            x = a / b - (Math.pow(1 + rate, c) - 1) / (Math.pow(rate + 1, c) * rate);
            if (x * side > 0) {
                side = -side;
                jd *= 10;
            }
            rate += side / jd;
        } while (i++ < cnt && Math.abs(x) >= 1 / Math.pow(10, ina));
//        if (i > cnt)
//            return Double.NaN;
        return rate;
    }


    public static void main(String agrs[]) {
        {
            // Double 现值 = 7944760.00d;
            // Double 年金 = 186627.21d;
            // Double 期数 = 48d;


            // 计算200次,比Excel20次要精确,误差精确到小数点后10位
            System.out.println(rate(150000, 6000, 36, 2111, 10));
        }


    }
}
原文地址:https://www.cnblogs.com/z-test/p/9494450.html