1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 等额本息贷款 ——已知贷款本金 月还款额 贷款月数 反推贷款月利率 年利率-java实现

等额本息贷款 ——已知贷款本金 月还款额 贷款月数 反推贷款月利率 年利率-java实现

时间:2024-06-09 08:00:31

相关推荐

等额本息贷款 ——已知贷款本金 月还款额 贷款月数 反推贷款月利率 年利率-java实现

等额本息 每月还款计算公式:

每月本息金额 = (本金×月利率×(1+月利率)^还款月数)÷ ((1+月利率)^还款月数-1))

反转求出 月利率

月利率 如果根据上面公式反转是算不出来的。

下面给出一种计算方式具体是试出来的,从1开始 一次减少0.1,,减到0.1后,每次再减少,0.01

import java.util.Scanner;public class Rate {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[]) {{Scanner sc = new Scanner(System.in);System.out.print("请输入借款本金:");double a = sc.nextDouble();System.out.print("请输入月还款额:");double b = sc.nextDouble();System.out.print("请输入还款月数:");int c = sc.nextInt();System.out.print("请输入计算次数(次数越高越准确,推荐大于200):");int cnt = sc.nextInt();System.out.print("请输入精确位数:");int ina = sc.nextInt();// Double 现值 = 7944760.00d;// Double 年金 = 186627.21d;// Double 期数 = 48d;// 计算200次,比Excel20次要精确,误差精确到小数点后10位double rate = rate(a, b, c, cnt, ina)*100;double yearRate = rate * 12;System.out.println("月利率:"+rate+"%,年利率:"+yearRate+"%");}}}

结论:假如借10000元,每月还款1000元,分12个月,利率不是简单的2000/10000=20%,由上述算法得出利率为35.07%。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。