我一直在研究一个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;
}
答案 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。