计算Java(TVM)的利率

时间:2013-08-12 02:33:57

标签: java math iteration formula

我一直在研究一个Java项目,它是一个计算器,可用于计算复合兴趣的不同场景(非常类似于this one等图形计算器上的TVM函数。

计算器的主要功能是使用公式中的已知值计算缺失值。除了计算利率( I

之外,我已经得到了所有公式。

我做了一些研究,显然没有直接的公式来计算利率。这个网站:http://www.getobjects.com/Components/Finance/TVM/formulas.html显示了我需要使用的方法,但需要一些迭代才能使用反复试验找到 I 。 (查看链接,向下滚动到“每年利率”标题)

以下是我为它设置的结构:

public static double calculateI(double N, double PV, double PMT, double FV, double PY){
    //method for calculating I goes here

    return I;
}

我不确定如何实现这一点,有人可以建议如何做到这一点或指出我正确的方向?

提前致谢。


在@rocketboy

的建议之后,这是我的代码
public static double formulaI(double ip, double N, double PV, double PMT, double FV, double PY){
    double I1=(PV*Math.pow((1+ip),N))+((PMT*1)*(Math.pow((1+ip),N))-1)+FV;
    return I1;
}
public static double calculateI(double N, double PV, double PMT, double FV, double PY){
    double ip=0;
    double res;
    do{
        res = formulaI(ip,N,PV,PMT,FV,PY);
        ip=ip+0.01;
        System.out.println(res);
    }while(res!=0);
    double I=ip*PY;
return I;
}

1 个答案:

答案 0 :(得分:0)

尝试类似:

double calculateI(/*all values for varialbles*/){
//definition;
}

Double.valueOf(d).equals(0.0);

long ip =0;
double res;

do{
   res = calculateI(ip, /*other constant values*/);
   ip++; /*Or you can increase ip according to your logic*/    
}while ( Double.valueOf(res).equals(0.0/*Expected result*/));

编辑:您必须处理边缘情况。等式可能永远不会收敛到0。