在excel里有个函数RATE是求实际利率的,在网上搜罗了半年,公式倒是找到不少,可以没有一个实现的算法,郁闷,自己研究,写一个出来,做个备忘
公式:
上面的太复杂,来个简单的:
使用JAVA求实际利率
Java代码
- /**
- * 实际利率法
- * @author Bean(mailto:mailxbs@126.com)
- * @param a 现值
- * @param b 年金
- * @param c 期数
- * @param cnt 运算次数
- * @param ina 误差位数
- * @return 利率
- */
- public static double rate(double a,double b,double c,int cnt,int ina){
- double rate = 1,x,jd = 0.1,side = 0.1,i = 1;
- do{
- x = a/b - (Math.pow(1+rate, c)-1)/(Math.pow(rate+1, c)*rate);
- if(x*side>0){side = -side;jd *=10;}
- rate += side/jd;
- }while(i++<cnt&&Math.abs(x)>=1/Math.pow(10, ina));
- if(i>cnt)return Double.NaN;
- return rate;
- }
- public static void main(String agrs[]) {
- {
- Double 现值 = 7944760.00d;
- Double 年金 = 186627.21d;
- Double 期数 = 48d;
-
- //计算200次,比Excel20次要精确,误差精确到小数点后10位
- System.out.println(rate(现值,年金,期数,200,10));
- }
- }
转: http://beanopen.iteye.com/blog/791878
posted on 2015-05-26 11:06
fly 阅读(276)
评论(0) 编辑 收藏 所属分类:
java学习