zoukankan      html  css  js  c++  java
  • 利用“计算器”和公式做房贷计算

    等额本息公式还是挺复杂的,忽然想起以前写了一个“计算器”,因而就想顺手把房贷利息计算给做了,还加上了提供月供计算利率的功能。

    下图就是计算器的界面,支持:进制转换、四则运算、常用函数

    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);
    }

    房贷计算接口

     

  • 相关阅读:
    Binary Tree Maximum Path Sum
    ZigZag Conversion
    Longest Common Prefix
    Reverse Linked List II
    Populating Next Right Pointers in Each Node
    Populating Next Right Pointers in Each Node II
    Rotate List
    Path Sum II
    [Leetcode]-- Gray Code
    Subsets II
  • 原文地址:https://www.cnblogs.com/xingqi/p/9937099.html
Copyright © 2011-2022 走看看