1. 程式人生 > >利用“計算器”和公式做房貸計算

利用“計算器”和公式做房貸計算

等額本息公式還是挺複雜的,忽然想起以前寫了一個“計算器”,因而就想順手把房貸利息計算給做了,還加上了提供月供計算利率的功能。

 

下圖就是計算器的介面,支援:進位制轉換、四則運算、常用函式

image

 

下圖就是房貸公式

 

有了以上兩個工具,等額本息就比較簡單了,等額本金則更為簡單。

變數定義:A借款本金,B月利率,M期數,X月供;

月供計算:使用了臨時變數T=(1+B)^M,然後再計算月供X=A*(B*T)/(T-1)

利息計算:由於難以反推B月利率的計算公式,因此使用了直觀的反覆試錯法,即多次計算月供直到結果與提供的月供極為接近,此時的B月利率就非常接近真實值

String T; // (1+B)^M
if(StringUtil.hasLength(B)) {
    T = NumberUtil.parseExp("(1+"+B+")^"+M);
    X = NumberUtil.parseExp(A+"*("+B+"*"+T+")/("+T+"-1)");
}else {
    double BL = 0.000001, BH = 0.999999, BT = 0.0, XT = Double.parseDouble(X), XI = 0.0;
    if(XT*Integer.parseInt(M) < Double.parseDouble(A)) return
null; //不夠本金,何談利息 do { BT = (BL+BH)/2.0; //尋找B月利率 T = NumberUtil.parseExp("(1+"+BT+")^"+M); XI = Double.parseDouble(NumberUtil.parseExp(A+"*("+BT+"*"+T+")/("+T+"-1)")); if(Math.abs(XI-XT)<0.1) break; //1毛以內即可接受結果 if(XI>XT) BH = BT; else BL = BT; }
while(true); }

房貸計算介面