zl程序教程

您现在的位置是:首页 >  大数据

当前栏目

贷款利息计算

计算 贷款
2023-09-14 09:08:27 时间
package test;

import java.net.ServerSocket;

public class Profit {
    public Profit() {
    }

    static int loadYears = 25;

    public static void main(String[] args) {
        //gongjijin: 0.0325d
        //shang dai: 0.0515d
        
         dengBenJin(175, 0.0515d*0.88);
        double sum=0;
//                sum= dengE(120, 0.0325d);
//        sum+=dengE(55,0.0515d*0.88);
//        System.out.println("sum:"+sum);
    }

    static double dengE(double load, double loadInterest) {

        // final value
        load*=10000  ;
        double monthProfit = loadInterest / 12;
        double monthPay = load * monthProfit * Math.pow(1 + monthProfit, loadYears * 12) / (Math.pow(1 + monthProfit, loadYears * 12) - 1); 
        int startMonth = 0;// the month started to pay back. 0 means start from
                            // Jan.
        int startYear = 14; // the year start to pay back. 14 means start from
                            // 2014.

        double sum = 0;
        double remainLoad = load;
        for (int i = startMonth; i < loadYears * 12 + startMonth; i++) {
            double interest = remainLoad * monthProfit;
            double monthBenjin = (monthPay - interest);
            remainLoad -= monthBenjin;

            sum += monthPay;
            int theMonth = i % 12;
            int theYear = i / 12;

            if (theMonth == 0)
                System.out.println(2000 + (theYear + startYear) + "年");
            // System.out.println("\t" + (theMonth + 1) + "月\t\t" + monthPay +
            // "元\t" + "\t 本金:" +monthBenjin + "\t 利息:" + interest);
            System.out.println("\t" + (theMonth + 1) + "月\t\t" + convert(monthPay) + "元\t" + "\t 本金:" + convert(monthBenjin) + "\t 利息:"
                    + convert(interest));

        }
        System.out.println(" 总共付款 " + "\t\t" + convert(sum) + "元\n利息:\t\t " + convert(sum - load) + "元");
//        System.out.println(" 总共付款" + "\t\t" + monthPay*12*years + "元\n利息:\t\t " + (monthPay*12*years - base) + "元");
        return sum - load;
    }

    private static double dengBenJin(double load, double loadInterest) {

        // final value
        load*=10000  ;
        double monthProfit = loadInterest / 12;
        double monthBenjin = load / (loadYears * 12);
        int startMonth = 0;// the month started to pay back. 0 means start from
                            // Jan.
        int startYear = 14; // the year start to pay back. 14 means start from
                            // 2014.

        double sum = 0;
        for (int i = startMonth; i < loadYears * 12 + startMonth; i++) {
            double interest = (load - monthBenjin * (i - startMonth)) * monthProfit;
            double monthPay = monthBenjin + interest;
            sum += monthPay;
            int theMonth = i % 12;
            int theYear = i / 12;

            if (theMonth == 0)
                System.out.println(2000 + (theYear + startYear) + "年");
            System.out.println("\t" + (theMonth + 1) + "月\t\t" + convert(monthPay) + "元\t" + "\t 本金:" + convert(monthBenjin) + "\t 利息:" + convert(interest));

        }
        System.out.println(" 总共付款 " + "\t\t" + sum + "元\n利息:\t\t " + (sum - load) + "元");
        return sum - load;
    }

    static double convert(double value) {
        long l1 = Math.round(value * 100); // 四舍五入
        double ret = l1 / 100.0; // 注意:使用 100.0 而不是 100
        return ret;
    }

}