/**
* apr转irr
* @return
*/
public static String irrRate(double aprRate) {
Double beginningLoanAmount=100d;
Double monthlyRepayment=((100*aprRate)+100)/12;
Double repaymentPeriod=12d;
double rate = 1, x, jd = 0.1, side = 0.1, i = 1;
String text = "";
int cnt = 120;
int ina = 14;
// if (c == 1) {
// cnt = 20;
// }
if (Math.abs(repaymentPeriod - 1) < 0.0000000001) {
double bb = monthlyRepayment;
double aa = beginningLoanAmount;
double cc = (bb - aa) / aa;
NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(17);
return nf.format(cc);
}
if (repaymentPeriod <= 0) {
return "0";
}
do {
x = beginningLoanAmount / monthlyRepayment - (Math.pow(1 + rate, repaymentPeriod) - 1)
/ (Math.pow(rate + 1, repaymentPeriod) * 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) {
text = rate + "";
return text;
}
text = rate*12 + "";
return text;
}
apr 转 irr
于 2022-02-21 17:20:42 首次发布
这段代码实现了一个将年利率(APR)转换为内部收益率(IRR)的算法,主要用于金融计算。它通过迭代寻找满足特定条件的IRR值,用于评估投资项目的回报率。输入参数包括年利率、初始贷款金额、月还款额和还款期数。如果还款期数为1年且精确,直接返回APR对应的月利率;否则进行迭代计算直至达到预设精度或达到最大迭代次数。
摘要由CSDN通过智能技术生成