在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 閱讀(284)
評論(0) 編輯 收藏 所屬分類:
java學習