等额本息公式仍是挺复杂的,突然想起之前写了一个“计算器”,于是就想顺手把房贷利息计算给作了,还加上了提供月供计算利率的功能。php
下图就是计算器的界面,支持:进制转换、四则运算、经常使用函数java
下图就是房贷公式api
有了以上两个工具,等额本息就比较简单了,等额本金则更为简单。dom
变量定义:A借款本金,B月利率,M期数,X月供;svn
月供计算:使用了临时变量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); }
房贷计算接口spa