題目描述:
在金融中,我們有時會用內部收益率IRR來評價項目的投資財務效益,它等于使得投資凈現值NPV等于0的貼現率。換句話說,給定項目的期數T、初始現金流CF0和項目各期的現金流CF1, CF2, ...,CFT,IRR是下面方程的解:
?為了簡單起見,本題假定:除了項目啟動時有一筆投入(即初始現金流CF0 < 0)之外,其余各期均能賺錢(即對于所有i=1,2,...,T,CFi > 0)。根據定義,IRR可以是負數,但不能大于-1。
代碼:
package lanqiao;import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.*;public class Main {static String str = "";public static void main(String[] args) {DecimalFormat format=new DecimalFormat("##0.00");Scanner sc = new Scanner(System.in);while(true){int T = sc.nextInt();double cf[] = new double[T + 1];if(T == 0) break;else{for(int i = 0;i <= T;i ++)cf[i] = sc.nextInt();double L = -1.0;double R = 9999.0;for(int i = 0;i < 100;i ++){double IRR = (L + R) / 2;double sum =0;double den = 1;for(int k = 0;k <= T;k ++){sum += cf[k] / den;den *= (1 + IRR);}if(sum > 0){L = IRR;}else{R = IRR;}}str+=format.format(R)+"\n";}}System.out.println(str);}
}