何时还完房贷之【自由还款】信息计算(JAVA)

何时还完房贷之【自由还款】信息计算(JAVA)

背景

当今社会贷款买房,已经成为大多数人的必然选择。贷款方式可以选择公积金贷、商贷、组合贷,还款方式可以选择等额本息、等额本金、自由还款方式等。当前网络上存在各种版本的房贷计算器,其缺点如下:

  • 只能根据还款年限和贷款金额信息等推算出每月的还款额度和利息等信息,不能根据每月还款额度算出何时能还完贷款。如贷款80万,每月还6000,什么时候还完贷款?每月还7000,什么时候还完贷款?

  • 计算方法都是根据“等额本金”或者“等额本息”模式计算还款信息,实际上公积金贷款是以“自由还款”方式还贷,三者还是有所不同的

本代码实现的功能是在“自由还款”方式下,根据每月还款额度和其他信息,计算出何时还完贷款及还款信息

自由还款

北京住房公积金网关于“自由还款”利息计算的介绍:
自由还款方式下,每月支付的利息是由当月剩余的贷款本金乘以当时的月利率,多还的均为本金,在下一月还款时就不再计算利息。所以,您每月的还款越多,下月起支付的利息越少

具体代码

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.thunisoft.study.house.repayment;
import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
 * 计算“自由还款”方式下,每月还固定金额情况下,何时还完贷款及每月还款情况
 * @author wangzhen
 * @since 2017-11-29 15:58
 * @version 1.0.0
 */
public class FreePay {
    
    public static void main(String[] args){
        new FreePay().calcute(800000, 3.25/(100*12), 7000, 2017,12,6);
    }
    
/**
 * 计算“自由还款”方式下,每月还固定金额情况下,何时还完贷款及每月还款情况
 * @param zdke  剩余的总贷款额度
 * @param ylv   当前月利率。年利率/12
 * @param yhke  每月还款额度
 * @param year  第一个还款日的年份
 * @param mon   第一个还款日的月份
 * @param day   第一个还款日
 */
    private  void calcute(double zdke,double ylv,double yhke,int year,int mon,int day){
        int zhkys = 1;
        double zhke = 0;
        double zdke_temp = zdke;
        Calendar cal = Calendar.getInstance();
        cal.set(year,mon-1,day);
        SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd");
        while(true){
            double sybj = sybj(zdke, ylv, yhke);
            if(sybj <=0 ){
                System.out.printf("第%3d还款月,还款日为%10s,剩余本金为%9.4f,本月利息为%9.4f,本月本金为%9.4f \r\n",zhkys,sdf.format(cal.getTime()),0.0d,zdke*ylv,zdke*1.0d);
                zhke = zhke +zdke*ylv+zdke;
                System.out.printf("\r\n");
                System.out.printf("需要还款%3d个月,%10s日还清所有贷款,总还款额度为%9.4f,总利息为%9.4f \r\n",zhkys,sdf.format(cal.getTime()),zhke,(zhke-zdke_temp));
                break;
            }
            
            System.out.printf("第%3d还款月,还款日为%10s,剩余本金为%9.4f,本月利息为%9.4f,本月本金为%9.4f \r\n",zhkys,sdf.format(cal.getTime()),sybj,(yhke - (zdke-sybj)),(zdke-sybj));
            cal.add(Calendar.MONTH, 1);
            zhkys++;
            zdke = sybj;
            zhke = zhke +yhke;
        }
        
    
    }
    
    
/**
 * 计算“自由还款”方式下,本次还款后剩余本金
 * @param sybj  上个月的剩余本金
 * @param ylv   当前月利率。年利率/12
 * @param myhkje  每月还款额度
 * @return  本次还款后剩余本金
 */
    private  double sybj(double sybj,double ylv,double myhkje){
        double ylx = sybj*ylv;
        double yhbj = myhkje - ylx;
        return sybj-yhbj;
    }
    
}


运行结果

例如,贷款80万,当前年利率为3.25%,第一个还款日为2017-12-6,每月还款7000元 情况下:

需要还款137个月,2029-04-06日还清所有贷款,总还款额度为958570.0613,总利息为158570.0613

第  1还款月,还款日为2017-12-06,剩余本金为795166.6667,本月利息为2166.6667,本月本金为4833.3333 
第  2还款月,还款日为2018-01-06,剩余本金为790320.2431,本月利息为2153.5764,本月本金为4846.4236 
第  3还款月,还款日为2018-02-06,剩余本金为785460.6937,本月利息为2140.4507,本月本金为4859.5493 
第  4还款月,还款日为2018-03-06,剩余本金为780587.9831,本月利息为2127.2894,本月本金为4872.7106 
第  5还款月,还款日为2018-04-06,剩余本金为775702.0755,本月利息为2114.0925,本月本金为4885.9075 
第  6还款月,还款日为2018-05-06,剩余本金为770802.9353,本月利息为2100.8598,本月本金为4899.1402 
第  7还款月,还款日为2018-06-06,剩余本金为765890.5266,本月利息为2087.5913,本月本金为4912.4087 
第  8还款月,还款日为2018-07-06,剩余本金为760964.8135,本月利息为2074.2868,本月本金为4925.7132 
第  9还款月,还款日为2018-08-06,剩余本金为756025.7598,本月利息为2060.9464,本月本金为4939.0536 
第 10还款月,还款日为2018-09-06,剩余本金为751073.3296,本月利息为2047.5698,本月本金为4952.4302 
第 11还款月,还款日为2018-10-06,剩余本金为746107.4865,本月利息为2034.1569,本月本金为4965.8431 
第 12还款月,还款日为2018-11-06,剩余本金为741128.1943,本月利息为2020.7078,本月本金为4979.2922 
第 13还款月,还款日为2018-12-06,剩余本金为736135.4165,本月利息为2007.2222,本月本金为4992.7778 
第 14还款月,还款日为2019-01-06,剩余本金为731129.1166,本月利息为1993.7001,本月本金为5006.2999 
第 15还款月,还款日为2019-02-06,剩余本金为726109.2579,本月利息为1980.1414,本月本金为5019.8586 
第 16还款月,还款日为2019-03-06,剩余本金为721075.8039,本月利息为1966.5459,本月本金为5033.4541 
第 17还款月,还款日为2019-04-06,剩余本金为716028.7175,本月利息为1952.9136,本月本金为5047.0864 
第 18还款月,还款日为2019-05-06,剩余本金为710967.9619,本月利息为1939.2444,本月本金为5060.7556 
第 19还款月,还款日为2019-06-06,剩余本金为705893.5002,本月利息为1925.5382,本月本金为5074.4618 
第 20还款月,还款日为2019-07-06,剩余本金为700805.2951,本月利息为1911.7949,本月本金为5088.2051 
第 21还款月,还款日为2019-08-06,剩余本金为695703.3094,本月利息为1898.0143,本月本金为5101.9857 
第 22还款月,还款日为2019-09-06,剩余本金为690587.5059,本月利息为1884.1965,本月本金为5115.8035 
第 23还款月,还款日为2019-10-06,剩余本金为685457.8470,本月利息为1870.3412,本月本金为5129.6588 
第 24还款月,还款日为2019-11-06,剩余本金为680314.2954,本月利息为1856.4483,本月本金为5143.5517 
第 25还款月,还款日为2019-12-06,剩余本金为675156.8132,本月利息为1842.5179,本月本金为5157.4821 
第 26还款月,还款日为2020-01-06,剩余本金为669985.3629,本月利息为1828.5497,本月本金为5171.4503 
第 27还款月,还款日为2020-02-06,剩余本金为664799.9066,本月利息为1814.5437,本月本金为5185.4563 
第 28还款月,还款日为2020-03-06,剩余本金为659600.4064,本月利息为1800.4997,本月本金为5199.5003 
第 29还款月,还款日为2020-04-06,剩余本金为654386.8241,本月利息为1786.4178,本月本金为5213.5822 
第 30还款月,还款日为2020-05-06,剩余本金为649159.1218,本月利息为1772.2976,本月本金为5227.7024 
第 31还款月,还款日为2020-06-06,剩余本金为643917.2611,本月利息为1758.1393,本月本金为5241.8607 
第 32还款月,还款日为2020-07-06,剩余本金为638661.2037,本月利息为1743.9426,本月本金为5256.0574 
第 33还款月,还款日为2020-08-06,剩余本金为633390.9111,本月利息为1729.7074,本月本金为5270.2926 
第 34还款月,还款日为2020-09-06,剩余本金为628106.3448,本月利息为1715.4337,本月本金为5284.5663 
第 35还款月,还款日为2020-10-06,剩余本金为622807.4662,本月利息为1701.1214,本月本金为5298.8786 
第 36还款月,还款日为2020-11-06,剩余本金为617494.2364,本月利息为1686.7702,本月本金为5313.2298 
第 37还款月,还款日为2020-12-06,剩余本金为612166.6166,本月利息为1672.3802,本月本金为5327.6198 
第 38还款月,还款日为2021-01-06,剩余本金为606824.5679,本月利息为1657.9513,本月本金为5342.0487 
第 39还款月,还款日为2021-02-06,剩余本金为601468.0511,本月利息为1643.4832,本月本金为5356.5168 
第 40还款月,还款日为2021-03-06,剩余本金为596097.0270,本月利息为1628.9760,本月本金为5371.0240 
第 41还款月,还款日为2021-04-06,剩余本金为590711.4565,本月利息为1614.4294,本月本金为5385.5706 
第 42还款月,还款日为2021-05-06,剩余本金为585311.3000,本月利息为1599.8435,本月本金为5400.1565 
第 43还款月,还款日为2021-06-06,剩余本金为579896.5181,本月利息为1585.2181,本月本金为5414.7819 
第 44还款月,还款日为2021-07-06,剩余本金为574467.0712,本月利息为1570.5531,本月本金为5429.4469 
第 45还款月,还款日为2021-08-06,剩余本金为569022.9195,本月利息为1555.8483,本月本金为5444.1517 
第 46还款月,还款日为2021-09-06,剩余本金为563564.0232,本月利息为1541.1037,本月本金为5458.8963 
第 47还款月,还款日为2021-10-06,剩余本金为558090.3425,本月利息为1526.3192,本月本金为5473.6808 
第 48还款月,还款日为2021-11-06,剩余本金为552601.8372,本月利息为1511.4947,本月本金为5488.5053 
第 49还款月,还款日为2021-12-06,剩余本金为547098.4671,本月利息为1496.6300,本月本金为5503.3700 
第 50还款月,还款日为2022-01-06,剩余本金为541580.1921,本月利息为1481.7250,本月本金为5518.2750 
第 51还款月,还款日为2022-02-06,剩余本金为536046.9718,本月利息为1466.7797,本月本金为5533.2203 
第 52还款月,还款日为2022-03-06,剩余本金为530498.7657,本月利息为1451.7939,本月本金为5548.2061 
第 53还款月,还款日为2022-04-06,剩余本金为524935.5332,本月利息为1436.7675,本月本金为5563.2325 
第 54还款月,还款日为2022-05-06,剩余本金为519357.2336,本月利息为1421.7004,本月本金为5578.2996 
第 55还款月,还款日为2022-06-06,剩余本金为513763.8261,本月利息为1406.5925,本月本金为5593.4075 
第 56还款月,还款日为2022-07-06,剩余本金为508155.2698,本月利息为1391.4437,本月本金为5608.5563 
第 57还款月,还款日为2022-08-06,剩余本金为502531.5237,本月利息为1376.2539,本月本金为5623.7461 
第 58还款月,还款日为2022-09-06,剩余本金为496892.5465,本月利息为1361.0229,本月本金为5638.9771 
第 59还款月,还款日为2022-10-06,剩余本金为491238.2972,本月利息为1345.7506,本月本金为5654.2494 
第 60还款月,还款日为2022-11-06,剩余本金为485568.7342,本月利息为1330.4371,本月本金为5669.5629 
第 61还款月,还款日为2022-12-06,剩余本金为479883.8162,本月利息为1315.0820,本月本金为5684.9180 
第 62还款月,还款日为2023-01-06,剩余本金为474183.5016,本月利息为1299.6853,本月本金为5700.3147 
第 63还款月,还款日为2023-02-06,剩余本金为468467.7485,本月利息为1284.2470,本月本金为5715.7530 
第 64还款月,还款日为2023-03-06,剩余本金为462736.5154,本月利息为1268.7668,本月本金为5731.2332 
第 65还款月,还款日为2023-04-06,剩余本金为456989.7601,本月利息为1253.2447,本月本金为5746.7553 
第 66还款月,还款日为2023-05-06,剩余本金为451227.4407,本月利息为1237.6806,本月本金为5762.3194 
第 67还款月,还款日为2023-06-06,剩余本金为445449.5150,本月利息为1222.0743,本月本金为5777.9257 
第 68还款月,还款日为2023-07-06,剩余本金为439655.9408,本月利息为1206.4258,本月本金为5793.5742 
第 69还款月,还款日为2023-08-06,剩余本金为433846.6756,本月利息为1190.7348,本月本金为5809.2652 
第 70还款月,还款日为2023-09-06,剩余本金为428021.6770,本月利息为1175.0014,本月本金为5824.9986 
第 71还款月,还款日为2023-10-06,剩余本金为422180.9024,本月利息为1159.2254,本月本金为5840.7746 
第 72还款月,还款日为2023-11-06,剩余本金为416324.3090,本月利息为1143.4066,本月本金为5856.5934 
第 73还款月,还款日为2023-12-06,剩余本金为410451.8540,本月利息为1127.5450,本月本金为5872.4550 
第 74还款月,还款日为2024-01-06,剩余本金为404563.4945,本月利息为1111.6404,本月本金为5888.3596 
第 75还款月,还款日为2024-02-06,剩余本金为398659.1873,本月利息为1095.6928,本月本金为5904.3072 
第 76还款月,还款日为2024-03-06,剩余本金为392738.8892,本月利息为1079.7020,本月本金为5920.2980 
第 77还款月,还款日为2024-04-06,剩余本金为386802.5571,本月利息为1063.6678,本月本金为5936.3322 
第 78还款月,还款日为2024-05-06,剩余本金为380850.1473,本月利息为1047.5903,本月本金为5952.4097 
第 79还款月,还款日为2024-06-06,剩余本金为374881.6165,本月利息为1031.4691,本月本金为5968.5309 
第 80还款月,还款日为2024-07-06,剩余本金为368896.9208,本月利息为1015.3044,本月本金为5984.6956 
第 81还款月,还款日为2024-08-06,剩余本金为362896.0167,本月利息为 999.0958,本月本金为6000.9042 
第 82还款月,还款日为2024-09-06,剩余本金为356878.8600,本月利息为 982.8434,本月本金为6017.1566 
第 83还款月,还款日为2024-10-06,剩余本金为350845.4070,本月利息为 966.5469,本月本金为6033.4531 
第 84还款月,还款日为2024-11-06,剩余本金为344795.6133,本月利息为 950.2063,本月本金为6049.7937 
第 85还款月,还款日为2024-12-06,剩余本金为338729.4347,本月利息为 933.8215,本月本金为6066.1785 
第 86还款月,还款日为2025-01-06,剩余本金为332646.8269,本月利息为 917.3922,本月本金为6082.6078 
第 87还款月,还款日为2025-02-06,剩余本金为326547.7454,本月利息为 900.9185,本月本金为6099.0815 
第 88还款月,还款日为2025-03-06,剩余本金为320432.1456,本月利息为 884.4001,本月本金为6115.5999 
第 89还款月,还款日为2025-04-06,剩余本金为314299.9826,本月利息为 867.8371,本月本金为6132.1629 
第 90还款月,还款日为2025-05-06,剩余本金为308151.2118,本月利息为 851.2291,本月本金为6148.7709 
第 91还款月,还款日为2025-06-06,剩余本金为301985.7880,本月利息为 834.5762,本月本金为6165.4238 
第 92还款月,还款日为2025-07-06,剩余本金为295803.6661,本月利息为 817.8782,本月本金为6182.1218 
第 93还款月,还款日为2025-08-06,剩余本金为289604.8011,本月利息为 801.1349,本月本金为6198.8651 
第 94还款月,还款日为2025-09-06,剩余本金为283389.1474,本月利息为 784.3463,本月本金为6215.6537 
第 95还款月,还款日为2025-10-06,剩余本金为277156.6597,本月利息为 767.5123,本月本金为6232.4877 
第 96还款月,还款日为2025-11-06,剩余本金为270907.2923,本月利息为 750.6326,本月本金为6249.3674 
第 97还款月,还款日为2025-12-06,剩余本金为264640.9995,本月利息为 733.7072,本月本金为6266.2928 
第 98还款月,还款日为2026-01-06,剩余本金为258357.7356,本月利息为 716.7360,本月本金为6283.2640 
第 99还款月,还款日为2026-02-06,剩余本金为252057.4544,本月利息为 699.7189,本月本金为6300.2811 
第100还款月,还款日为2026-03-06,剩余本金为245740.1101,本月利息为 682.6556,本月本金为6317.3444 
第101还款月,还款日为2026-04-06,剩余本金为239405.6562,本月利息为 665.5461,本月本金为6334.4539 
第102还款月,还款日为2026-05-06,剩余本金为233054.0465,本月利息为 648.3903,本月本金为6351.6097 
第103还款月,还款日为2026-06-06,剩余本金为226685.2345,本月利息为 631.1880,本月本金为6368.8120 
第104还款月,还款日为2026-07-06,剩余本金为220299.1737,本月利息为 613.9392,本月本金为6386.0608 
第105还款月,还款日为2026-08-06,剩余本金为213895.8173,本月利息为 596.6436,本月本金为6403.3564 
第106还款月,还款日为2026-09-06,剩余本金为207475.1185,本月利息为 579.3012,本月本金为6420.6988 
第107还款月,还款日为2026-10-06,剩余本金为201037.0303,本月利息为 561.9118,本月本金为6438.0882 
第108还款月,还款日为2026-11-06,剩余本金为194581.5056,本月利息为 544.4753,本月本金为6455.5247 
第109还款月,还款日为2026-12-06,剩余本金为188108.4971,本月利息为 526.9916,本月本金为6473.0084 
第110还款月,还款日为2027-01-06,剩余本金为181617.9576,本月利息为 509.4605,本月本金为6490.5395 
第111还款月,还款日为2027-02-06,剩余本金为175109.8396,本月利息为 491.8820,本月本金为6508.1180 
第112还款月,还款日为2027-03-06,剩余本金为168584.0954,本月利息为 474.2558,本月本金为6525.7442 
第113还款月,还款日为2027-04-06,剩余本金为162040.6774,本月利息为 456.5819,本月本金为6543.4181 
第114还款月,还款日为2027-05-06,剩余本金为155479.5375,本月利息为 438.8602,本月本金为6561.1398 
第115还款月,还款日为2027-06-06,剩余本金为148900.6279,本月利息为 421.0904,本月本金为6578.9096 
第116还款月,还款日为2027-07-06,剩余本金为142303.9005,本月利息为 403.2725,本月本金为6596.7275 
第117还款月,还款日为2027-08-06,剩余本金为135689.3069,本月利息为 385.4064,本月本金为6614.5936 
第118还款月,还款日为2027-09-06,剩余本金为129056.7987,本月利息为 367.4919,本月本金为6632.5081 
第119还款月,还款日为2027-10-06,剩余本金为122406.3276,本月利息为 349.5288,本月本金为6650.4712 
第120还款月,还款日为2027-11-06,剩余本金为115737.8447,本月利息为 331.5171,本月本金为6668.4829 
第121还款月,还款日为2027-12-06,剩余本金为109051.3014,本月利息为 313.4567,本月本金为6686.5433 
第122还款月,还款日为2028-01-06,剩余本金为102346.6486,本月利息为 295.3473,本月本金为6704.6527 
第123还款月,还款日为2028-02-06,剩余本金为95623.8375,本月利息为 277.1888,本月本金为6722.8112 
第124还款月,还款日为2028-03-06,剩余本金为88882.8187,本月利息为 258.9812,本月本金为6741.0188 
第125还款月,还款日为2028-04-06,剩余本金为82123.5430,本月利息为 240.7243,本月本金为6759.2757 
第126还款月,还款日为2028-05-06,剩余本金为75345.9609,本月利息为 222.4179,本月本金为6777.5821 
第127还款月,还款日为2028-06-06,剩余本金为68550.0229,本月利息为 204.0620,本月本金为6795.9380 
第128还款月,还款日为2028-07-06,剩余本金为61735.6792,本月利息为 185.6563,本月本金为6814.3437 
第129还款月,还款日为2028-08-06,剩余本金为54902.8800,本月利息为 167.2008,本月本金为6832.7992 
第130还款月,还款日为2028-09-06,剩余本金为48051.5753,本月利息为 148.6953,本月本金为6851.3047 
第131还款月,还款日为2028-10-06,剩余本金为41181.7150,本月利息为 130.1397,本月本金为6869.8603 
第132还款月,还款日为2028-11-06,剩余本金为34293.2488,本月利息为 111.5338,本月本金为6888.4662 
第133还款月,还款日为2028-12-06,剩余本金为27386.1264,本月利息为  92.8775,本月本金为6907.1225 
第134还款月,还款日为2029-01-06,剩余本金为20460.2971,本月利息为  74.1708,本月本金为6925.8292 
第135还款月,还款日为2029-02-06,剩余本金为13515.7104,本月利息为  55.4133,本月本金为6944.5867 
第136还款月,还款日为2029-03-06,剩余本金为6552.3155,本月利息为  36.6050,本月本金为6963.3950 
第137还款月,还款日为2029-04-06,剩余本金为   0.0000,本月利息为  17.7459,本月本金为6552.3155 

需要还款137个月,2029-04-06日还清所有贷款,总还款额度为958570.0613,总利息为158570.0613 
posted @ 2017-11-29 16:38  wangzhen3798  阅读(1514)  评论(0编辑  收藏  举报