Java:等额本息还款计算
首先我们推导下等额本息还款的还款公式。
以下数据已知:
贷款总额:AAA
贷款期限(月):mmm
贷款年利率:PPP
贷款月利率:p=P/12p = P / 12p=P/12
求等额本息方式每月还款额,和每月还款的本金利息分别多少。
第1个月产生的利息为 b1=A∗pb_1=A*pb1=A∗p,设每月还款额为xxx,显然 x>b1x>b_1x>b1。
令a1=x−b1a_1=x-b_1a1=x−b1,则第2个月产生的利息为 b2=(A−a1)∗pb_2=(A-a_1)*pb2=(A−a1)∗p。
令a2=x−b2a_2=x-b_2a2=x−b2,可得:
(1){b1−b2=A∗p−(A−a1)∗pa2−a1=(x−b2)−(x−b1)\left\{ \begin{array}{l} b_1-b_2=A*p-(A-a_1)*p \\ a_2-a1=(x-b_2)-(x-b_1) \end{array} \right. \tag{1} {b1−b2=A∗p−(A−a1)∗pa2−a1=(x−b2)−(x−b1)(1)
由(1)(1)(1)可得:
a2=a1(1+p)a_2=a_1(1+p)a2=a1(1+p)
同样道理,我们依次可以推得:
{a3=a2(1+p)=a1∗(1+p)2a4=a3(1+p)=a1∗(1+p)3...am=am−1(1+p)=a1∗(1+p)m−1\left\{ \begin{array}{l} a_3=a_2(1+p)=a_1*(1+p)^2 \\ a_4=a_3(1+p)=a_1*(1+p)^3 \\ ... \\ a_m=a_{m-1}(1+p)=a_1*(1+p)^{m-1} \\ \end{array} \right. ⎩⎪⎪⎨⎪⎪⎧a3=a2(1+p)=a1∗(1+p)2a4=a3(1+p)=a1∗(1+p)3...am=am−1(1+p)=a1∗(1+p)m−1
当还款期限满时,我们应该正好将贷款全部的本金和利息还清,所以有:
∑i=1mai=A\sum_{i=1}^m a_i=Ai=1∑mai=A
可以看出求a1a_1a1其实就是简单的等差数列求和问题,我写下过程:
{A=a1+a1∗(1+p)+a1∗(1+p)2+...+a1∗(1+p)m−1(1+p)∗A=a1∗(1+p)+a1∗(1+p)2+...+a1∗(1+p)m\left\{ \begin{array}{l} A=a_1+a_1*(1+p)+a_1*(1+p)^2+...+a_1*(1+p)^{m-1} \\ (1+p)*A=a_1*(1+p)+a_1*(1+p)^2+...+a_1*(1+p)^m \\ \end{array} \right. {A=a1+a1∗(1+p)+a1∗(1+p)2+...+a1∗(1+p)m−1(1+p)∗A=a1∗(1+p)+a1∗(1+p)2+...+a1∗(1+p)m
两式相减并化简可得:
a1=A∗p(1+p)m−1a_1=\dfrac{A*p}{(1+p)^m-1}a1=(1+p)m−1A∗p
结合上面第1月的利息b1b_1b1,就能推出xxx了,下面给出Java代码:
/*** 等额本息还款金额计算类*/
public class DK {private double A; // 贷款总额private double P; // 年利率private double p; // 月利率private int m; // 贷款期限(月)private double a1; // 第1个月所还本金private double b1; // 第1个月所还利息private double x; // 每月所还金额/*** @param A* 贷款总额* @param m* 贷款期限(月)* @param P* 年利率*/public DK(double A, int m, double P) {this.A = A;this.m = m;this.P = P;this.p = this.P / 12;this.b1 = A * p;this.a1 = A * p / (Math.pow(1 + p, m) - 1);this.x = a1 + b1;}public static void main(String[] args) {double A = 50 * 10000.0;double P = 0.05;int m = 360;DK dk = new DK(A, m, P);System.out.println(String.format("%.2f", dk.getX()));for (int i = 1; i < 4; i++) {System.out.println(String.format("%.2f, %.2f", dk.getAi(i), dk.getBi(i)));}}/*** @return 每月所还金额*/public double getX() {return this.x;}/*** @param i* 月份* @return 返回第i个月所还本金*/public double getAi(int i) {return this.a1 * Math.pow(1 + p, i - 1);}/*** @param i* 月份* @return 返回第i个月所还利息*/public double getBi(int i) {return this.x - getAi(i);}/*** @param i* 月份* @return 返回到第i月所还本金总和*/public double getASum(int i) {double sum = 0.0;for (int j = 1; j <= i; j++) {sum += getAi(j);}return sum;}/*** @param i* 月份* @return 返回到第i月所还利息总和*/public double getBSum(int i) {double sum = 0.0;for (int j = 1; j <= i; j++) {sum += getBi(j);}return sum;}
}
Java:等额本息还款计算相关推荐
- 写一个MySql存储过程实现房贷等额本息还款计算(另外附javascript代码)
写一个MySql存储过程实现房贷等额本息还款计算 MySql存储过程代码如下: DROP procedure IF EXISTS `calc_equal_interest_proc`;DELIMITE ...
- Java等额本息实现
工具类 import java.math.BigDecimal; import java.util.HashMap; import java.util.Map;/*** 等额本息计算工具类** < ...
- 等额本息还款和等额本金还款计算公式的推导
VBA代码实现:http://blog.csdn.net/xiaotao_liu/archive/2008/02/27/2124452.aspx 众所周知,银行住房贷款的分期付款方式分为等额本息付款和 ...
- [转]详细说明等额本金和等额本息的计算方式与利弊
关于利率表请查看以下的帖子,这里只给举出例子,相信大家看后都可以自己计算了. 注: 1.贷款年限5年以上的年利率一律为5.4%. 2.月利率等额本金与等额本息的都一样为0.0042. 3.以贷款20万 ...
- 等额本息还款法贷款利息计算方法及还款计划
贷款后一般有两种方法还款:等额本金.等额本息,对于房奴一族来说,买房后手头余粮无几,只得选择等额本息还款,尽管等额本金在相同期数的情况下还款能节省不少的利息. 等额本息对还款人来说很简单,就是每个月还 ...
- 等比序列的实际应用 —等额本息还款金额公式推导
缘起 等额本息是买房按揭贷款时最常用的一种还款方式,其意义从字面就可以理解,就是每期还款的本金加利息之和相等.我们在计算每期应还本金和利息时,在Excel中可以方便的使用函数PMT(rate,nper ...
- 等额本金贷款和等额本息贷款计算和比较
等额本息贷款 等额本息还款法即把按揭贷款的本金总额与利息总额相加,然后平均分摊到还款期限的每个月中,每个月的还款额是固定的,但每月还款额中的本金比重逐月递增.利息比重逐月递减.这种方法是目前最为普遍, ...
- 用c语言实现银行贷款程序(等额本息还款法、等额本金还款法)
王先生从银行贷了350,000元用于买房,贷款期限为20年 ⑴用等额本息还款法,计算每月应还本息(每月月供).20年总利息 ⑵用等额本金还款法,计算每月应还本息(每月月供).20年总利息? ⑶比较两种 ...
- 某用户为购房办理商业贷款,选择了按月等额本息还款法,计算公式如下,在贷款本金(loan)和月利率(rate)一定的情况下,住房贷款的月还款(money)取决于还款月数(month)
#include<stdio.h> #include<math.h> int main() {int l,c,month;float money;double r;printf ...
- excel 等额本息还款每期本息计算_零基础入门融资租赁计算(第三讲)——设计租金方案...
导语:本期我们将讲解如何设计融资租赁租金方案,以及设计的步骤和核心本质.通过本章的学习你将了解如何设计最基本的租金方案和计算该方案下的IRR. 1 融资租赁IRR计算的逻辑框架和黄金原则: (1)宏观 ...
最新文章
- 【青少年编程】【四级】绘图程序优化
- 二叉链表和职工管理系统结合_基于二叉链表的二叉树实现
- pyqt label 设值时会进行加法_飞桨与PyQt的碰撞,图形化目标检测So Easy
- php文件用什么浏览,什么是PHP文件 php文件用什么打开
- Jquery给基本控件的取值、赋值
- C++习题 虚函数-计算图形面积
- Maven系列一pom.xml 配置详解
- jQuery判断页面是电脑端还是手机端
- html5实现在线动态画板,HTML5 canvas实现一个简易画板
- 原生JavaScript贪吃蛇
- 磨金石学院来报道,电影剪辑有哪些技巧呢?如何让你的剪辑片段更为精彩。
- -TEST 20 for NOIP 。。。(80-300)-----(( ! ))
- uniapp中text-indent不起作用,uniapp首行缩进不管用如何解决?
- 阿里云DNS 新增云上线路的智能解析功能
- uniapp 实时定位(系统、后台运行、支持息屏)插件 Ba-Location
- linux内部网关协议igp,OSPF基础知识概述
- 商品搜索结果页用RecyclerView列表实现的单排和双排展示及切换
- 微信8.0状态背景视频合集
- 斗球体育直播app看赛事,选用【抓饭直播】
- linux下用户名怎么修改密码,LINUX用户名密码忘记怎么修改用户密码