免息贷款最常见于买车贷款当中,通常有2年,3 年,5年免息贷款,但要先交一笔手续费,这其实并不是真正的免息,那实际转化为年利率应该怎么算呢, 很多销售在计算时就简单的说利率就是 (手续费/贷款额)/贷款年数 就是处利率,实际上这样算是不准确的,因为我们每月要还款,随着还款时间越靠后,剩下的金额越少,并不是一直占用着这笔钱,用一个图直观表示:
如黄色部分,我们贷款占用的钱,实际会逐渐减少,那实际的利率应该怎么计算呢:
假设:
贷款:B
期数:N
手续费:S(买车时通常是一次性付手续费)
年利率:X
先对黄色部分进行积分求出面积,再用平均值求出等价的贷款额:
面积=((N+1)*N /2) * B/N
等价的贷款额= 面积/N = (N+1)/(2*N) * B
年利率 = 手续费/(等价贷款 * 年数) = S /( ((N+1)/(2*N) * B) * (N/12)) = (24*S) / B(N+1)
例子:
假如贷款5万,手续费3000,分24期还款,那得到:
贷款:50000
手续费:3000 (一次付清手续费)
还款期数:24
每期还款:2083.33
年化利率:5.76 %
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 Charge = Double.parseDouble(args[2]); //每月还款(元)
rateCalculator2(Loan, months, Charge);
}
/**
* 免息贷款,但有手续费,计算年化利率.
*
* @param totalLoan 贷款总额(单位:元)
* @param months 贷款期数(月数)
* @param serviceCharge 手续费(元)
* @return 年利率(%)
*/
public static double rateCalculator2(double totalLoan, int months, double serviceCharge){
double monthPay = totalLoan / months;
double yearRate = (serviceCharge * 24) / (totalLoan * (months + 1)) * 100;
System.out.println("贷款金额:" + totalLoan);
System.out.println("手续费: " + serviceCharge);
System.out.println("还款期数:" + months);
System.out.println("每月还款:" + String.format("%.2f", monthPay));
System.out.println("年化利率:" + String.format("%.2f", yearRate) + "%");
return yearRate;
}
}