等额本息还款⽅式的年利率计算⽅法及java代码实现
等额本息还款⽅式在⽣活中是很常⽤的,⽐如贷款买房,买车,信⽤卡分期还款,京东⽩条分期 ,等等,只要是借了钱,每⽉还款⾦额⼀样的,都属于等额本息的⽅式。有些时候我们贷款后,商家或银⾏告诉了每期的还款额,要算总还款是很简单(每期还款*期数),计算部利息也很容易(总还款-本⾦),但要计算年化利率就⽐较复杂了,年化利率还是⼀个⽐较重要的参数,它可更直观反应这次贷款的利率⾼低。本期给出计算⽅法及java代码实现,以及⼀些计算的例⼦:
计算⽅法:
假设:
贷款为B (本⾦)
期数为N
每期还款M江米包粽子需要泡多长时间
年化费率为X
则:
第⼀期还款(第⼀期还本⾦+第⼀期利息)M=B1 + B*X/12 //第⼀期的利息就是总本⾦B⼀个⽉的利息,就是年化费率除以12再乘以总本⾦(就是⽉费率乘以本⾦);
第⼆期还款(第⼆期还本⾦+第⼆期利息)M=B2 + (B-B1)*X/12 //第⼆期开始本⾦减少了,所以计算利息要减去已还的本⾦
第三期还款(第三期还本⾦+第三期利息)M=B3 + (B-B1-B2)*X/12
。。。
第N期还款(第N期还本⾦+第N期利息)M=Bn + (-Bn-1)*X/12
构成⼀个⽅程组
M=B1 + B*X/12
M=B2 + (B-B1)*X/12
M=B3 + (B-B1-B2)*X/12
。。。
M=Bn + (-Bn-1)*X/12
B=B1+B2+...+Bn
解⽅程组就可以得出年利率X;
java代码实现如下:使⽤了⼆分法来计算(使⽤⼆分法,相对于指数或对数的计算要快很多)
public class RateCalculator{
public static void main(String[] args) {
if (args.length < 3) {
System.out.println("⾄少输⼊3个参数(贷款⾦额还款期数每⽉还款)!");
return;
}
double Loan = Double.parseDouble(args[0]); //贷款⾦额(元)
int months = Integer.parseInt(args[1]); //还款期数(⽉)
double monthPay = Double.parseDouble(args[2]); //每⽉还款(元)
double yearRate = rateCalculator(Loan,months,monthPay); //年化利率(%)
System.out.println("贷款⾦额:" + Loan);
System.out.println("还款期数:" + months);
System.out.println("每⽉还款:" + monthPay);
System.out.println("年化利率:" + String.format("%.2f", yearRate) + "%");
}
/**
* 等额本息:已知每⽉还款额,计算年利率.
好网游*
* @param totalLoan 贷款总额(单位:元)
* @param months 贷款期数(⽉数)
* @param monthPay 每⽉还款额(元)
* @return 年利率(%)
*/
public static double rateCalculator(double totalLoan, int months, double monthPay) {
double monthRate; //⽉利率
double[] monthPayLoan = new double[months]; //每期还的本⾦
/*本算法采⽤⼆分法穷举第⼀⽉的还款本⾦来计算每⽉还款本⾦,计算出还的本⾦就可以得到⽉利率 */
double low = 0;
double up = totalLoan/months;
boolean isFinish = false;
int j=0;
do {联想笔记本光驱
monthPayLoan[0] = (low+up)/2;
monthRate = (monthPay - monthPayLoan[0]) / totalLoan;
double havePayLoan = 0;
double calculateLoan = monthPayLoan[0];
for(int i=1; i<months; i++){
havePayLoan += monthPayLoan[i-1];
monthPayLoan[i] = monthPay-(totalLoan-havePayLoan)*monthRate;
calculateLoan += monthPayLoan[i];
}
long calculate = und(calculateLoan);
long total = und(totalLoan);
if(calculate == total) {
isFinish = true;
} else if (calculate > total) {造价工程师报考条件
up = monthPayLoan[0];
} else {
low = monthPayLoan[0];
}河北三本院校
if(++j>30){
isFinish = true;
monthRate = -1;
}
} while(!isFinish);
return monthRate*12*100;
张柏芝谢霆锋}
}
验证算法的准确性,在⽹上⼀个房贷计算器,计算⼀次房贷款:
如上,贷款100000,分24期,利率4.75%,每期还款4375.95
通过本算法反向计算出的年利率是4.75%是准确 的。
以下是⼀些实际的例⼦:
1,特期拉model3分期付款:
实际计算结果为:
2,某购物⽹站的分期付款:iphone 11 max , 分24期:
3,某信⽤卡现⾦分期
可以看出信⽤卡的分期的年化利率还是⽐较⾼的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论