在excel里有個函數(shù)RATE是求實際利率的,在網(wǎng)上搜羅了半年,公式倒是找到不少,可以沒有一個實現(xiàn)的算法,郁悶,自己研究,寫一個出來,做個備忘
公式:
上面的太復(fù)雜,來個簡單的:
使用JAVA求實際利率
- /**
- * 實際利率法
- * @author Bean(mailto:mailxbs@126.com)
- * @param a 現(xiàn)值
- * @param b 年金
- * @param c 期數(shù)
- * @param cnt 運算次數(shù)
- * @param ina 誤差位數(shù)
- * @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 現(xiàn)值 = 7944760.00d;
- Double 年金 = 186627.21d;
- Double 期數(shù) = 48d;
- //計算200次,比Excel20次要精確,誤差精確到小數(shù)點后10位
- System.out.println(rate(現(xiàn)值,年金,期數(shù),200,10));
- }
- }