- 【版权所有,文章允许转载,但须以链接方式注明源地址,否则追究法律责任】
- 【创作不易,点个赞就是对我最大的支持】
前言
仅作为学习笔记,供大家参考
总结的不错的话,记得点赞收藏关注哦!
面试遇到这么一道题:
编程题:银行贷款的还款方式中最常用的是一种叫“等额本息”,还款法,即借款人在约定还款期限内的每一期(月)归还的金额(产生的利息+部分本金)都是相等的,现有一笔总额为80万元的30年期住房贷款,年利率为5.25%,要求算出每一期的还款的本金和利息总额【请写出解决思路和任意一种编程语言实现的主要代码。】
结果:
话不多少上代码:
import java.util.Scanner;
/**
* @Author: 程序员温眉
* @Date: Created in 2020/8/22 16:40
*/
public class demo {
public static void main(String[] args) {
System.out.println("请输入贷款本金:");
Scanner input=new Scanner(System.in);
double invest = input.nextDouble(); //贷款本金
System.out.println("请输入年利率:(例如:5.25%就是0.0525)");
double yearRate = input.nextDouble(); //年利率
double monthRate = yearRate/12; //月利率
System.out.println("请输入借款月数:(例如:30年就是360)");
int month = input.nextInt(); //还款月数
System.out.println("本金-->"+invest+" 年利率--->"+yearRate*100+"%"+" 期限--->"+month+"个月");
System.out.println("--------------------------------------------");
// 每月本息金额 = (本金×月利率×(1+月利率)^还款月数)÷ ((1+月利率)^还款月数-1))
double monthIncome = (invest* monthRate * Math.pow(1+monthRate,month))/(Math.pow(1+monthRate,month)-1);
//四舍五入截取后两位
String result = String.format("%.2f", monthIncome);
System.out.println("每月本息金额 : " + result);
System.out.println("---------------------------------------------------");
// 每月本金 = 本金×月利率×(1+月利率)^(还款月序号-1)÷((1+月利率)^还款月数-1))
double monthCapital = 0;
for(int i=1;i<month+1;i++){
monthCapital = (invest* monthRate * (Math.pow((1+monthRate),i-1)))/(Math.pow(1+monthRate,month)-1);
//四舍五入截取后两位
String monthCapital1 = String.format("%.2f", monthCapital);
System.out.println("第" + i + "月本金: " + monthCapital1);
}
System.out.println("---------------------------------------------------");
// 每月利息 = 剩余本金 x 贷款月利率
double monthInterest = 0;
double capital = invest;
double tmpCapital = 0;
double totalInterest = 0;
for(int i=1;i<month+1;i++){
capital = capital - tmpCapital;
monthInterest = capital * monthRate;
tmpCapital = (invest* monthRate * (Math.pow((1+monthRate),i-1)))/(Math.pow(1+monthRate,month)-1);
//四舍五入截取后两位
String ssa = String.format("%.2f", monthInterest);
System.out.println("第" + i + "月利息: " + ssa);
totalInterest = totalInterest + monthInterest;
}
System.out.println("-------------------------------------------------");
//四舍五入截取后两位
String ss = String.format("%.2f", totalInterest);
System.out.println("总利息:--->"+ss+" 元");
System.out.println("-------------------------------------------------");
System.out.println("年利率:--->"+yearRate*100+"%");
System.out.println("-------------------------------------------------");
System.out.println("借款期限 : " + month/12+" 年");
System.out.println("-------------------------------------------------");
System.out.println("每月还款本息金额 : " + result+" 元");
}
/**
* 获取每月本息金额
* 计算方式
* 每月本息金额 = (本金×月利率×(1+月利率)^还款月数)÷ ((1+月利率)^还款月数-1))
* @param invest 本金
* @param yearRate 年利率
* @param month 还款月
* @return 每月本息金额
*/
public double getMonthIncome(double invest, double yearRate,int month){
double monthRate = yearRate/12; //月利率
double monthIncome = (invest* monthRate * Math.pow(1+monthRate,month))/(Math.pow(1+monthRate,month)-1);
return monthIncome;
}
}
创作不易,点个赞就是对我最大的支持~
wxgzh:程序员温眉
CSDN:程序员温眉
每天进步一点点的程序员