等额本金,等额本息数学推导:贷款 买房,利息怎么算?不要被忽悠了!李永乐老师讲等额本金和等额本息
一个心血来潮的研究,避免以后买房被坑。
捣鼓了半天才发现原来支付宝的那个利率是年利率不是月利率,坑了我半天。。。
代码
#include <stdio.h>
#include <math.h>
/*** @description: 等额本金* @param {double} totalPrincipal 贷款总额* @param {int} years 按揭年数* @param {double} annualInterestRate 年利率* @return {*}*/
double EqualPrincipalPayment(double totalPrincipal, int years, double annualInterestRate)
{ annualInterestRate = annualInterestRate / 100.0;int period = years * 12;double monthlyInterestRate = annualInterestRate / 12.0;double monthlyInterestPayment = totalPrincipal * annualInterestRate;double monthlyPrincicalPayment = totalPrincipal / period;double remainingPrincical = totalPrincipal;printf("贷款方式:等额本金\n");printf("贷款总额: %.02f\n", totalPrincipal);printf("年利率: %.02f%%\n", annualInterestRate * 100);printf("贷款期限: %d 年\n", years);int count = 1;do{monthlyInterestPayment = remainingPrincical * monthlyInterestRate;remainingPrincical -= monthlyPrincicalPayment;double monthlyPayment = monthlyPrincicalPayment + monthlyInterestPayment;printf("期数: %6d | 剩余本金: %10.02f | 月供: %10.02f | 月供本金: %10.02f | 月供利息: %10.02f\n", count, remainingPrincical, monthlyPayment, monthlyPrincicalPayment, monthlyInterestPayment);count++;} while (count <= period);
}// 等额本息
/*** @description:* @param {double} principal 贷款总额* @param {int} years 按揭年数* @param {double} annualInterestRate 年利率* @return {*}*/
void EqualMonthlyPayment(double totalPrincipal, int years, double annualInterestRate) {annualInterestRate = annualInterestRate / 100.0;int period = years * 12;double monthlyInterestRate = annualInterestRate / 12.0;//月付推导过程可见:https://www.jianshu.com/p/168ffe04ac20double monthlyPayment = totalPrincipal * (monthlyInterestRate * pow(1 + monthlyInterestRate, period)) / (pow(1 + monthlyInterestRate, period) - 1);printf("贷款方式:等额本息\n");printf("贷款总额: %.02f\n", totalPrincipal);printf("年利率: %.02f%%\n", annualInterestRate * 100);printf("贷款期限: %d 年\n", years);printf("每月还款金额: %.02f\n", monthlyPayment);double remainingPrincipal = totalPrincipal;int count = 1;do {double interestPayment = remainingPrincipal * monthlyInterestRate;double principalPayment = monthlyPayment - interestPayment;remainingPrincipal -= principalPayment;printf("期数: %6d | 剩余本金: %10.02f | 月供: %10.02f | 月供本金: %10.02f | 月供利息: %10.02f\n", count, remainingPrincipal, monthlyPayment, principalPayment, interestPayment);count++;} while (count <= period);
}int main()
{EqualPrincipalPayment(100000, 10, 5.0);EqualMonthlyPayment(100000, 10, 5.0);
}
测试
程序输出:
贷款方式:等额本金
贷款总额: 100000.00
年利率: 5.00%
贷款期限: 1 年
期数: 1 | 剩余本金: 91666.67 | 月供: 8750.00 | 月供本金: 8333.33 | 月供利息: 416.67
期数: 2 | 剩余本金: 83333.33 | 月供: 8715.28 | 月供本金: 8333.33 | 月供利息: 381.94
期数: 3 | 剩余本金: 75000.00 | 月供: 8680.56 | 月供本金: 8333.33 | 月供利息: 347.22
期数: 4 | 剩余本金: 66666.67 | 月供: 8645.83 | 月供本金: 8333.33 | 月供利息: 312.50
期数: 5 | 剩余本金: 58333.33 | 月供: 8611.11 | 月供本金: 8333.33 | 月供利息: 277.78
期数: 6 | 剩余本金: 50000.00 | 月供: 8576.39 | 月供本金: 8333.33 | 月供利息: 243.06
期数: 7 | 剩余本金: 41666.67 | 月供: 8541.67 | 月供本金: 8333.33 | 月供利息: 208.33
期数: 8 | 剩余本金: 33333.33 | 月供: 8506.94 | 月供本金: 8333.33 | 月供利息: 173.61
期数: 9 | 剩余本金: 25000.00 | 月供: 8472.22 | 月供本金: 8333.33 | 月供利息: 138.89
期数: 10 | 剩余本金: 16666.67 | 月供: 8437.50 | 月供本金: 8333.33 | 月供利息: 104.17
期数: 11 | 剩余本金: 8333.33 | 月供: 8402.78 | 月供本金: 8333.33 | 月供利息: 69.44
期数: 12 | 剩余本金: 0.00 | 月供: 8368.06 | 月供本金: 8333.33 | 月供利息: 34.72
贷款方式:等额本息
贷款总额: 100000.00
年利率: 5.00%
贷款期限: 1 年
每月还款金额: 8560.75
期数: 1 | 剩余本金: 91855.92 | 月供: 8560.75 | 月供本金: 8144.08 | 月供利息: 416.67
期数: 2 | 剩余本金: 83677.90 | 月供: 8560.75 | 月供本金: 8178.02 | 月供利息: 382.73
期数: 3 | 剩余本金: 75465.81 | 月供: 8560.75 | 月供本金: 8212.09 | 月供利息: 348.66
期数: 4 | 剩余本金: 67219.51 | 月供: 8560.75 | 月供本金: 8246.31 | 月供利息: 314.44
期数: 5 | 剩余本金: 58938.84 | 月供: 8560.75 | 月供本金: 8280.67 | 月供利息: 280.08
期数: 6 | 剩余本金: 50623.67 | 月供: 8560.75 | 月供本金: 8315.17 | 月供利息: 245.58
期数: 7 | 剩余本金: 42273.85 | 月供: 8560.75 | 月供本金: 8349.82 | 月供利息: 210.93
期数: 8 | 剩余本金: 33889.25 | 月供: 8560.75 | 月供本金: 8384.61 | 月供利息: 176.14
期数: 9 | 剩余本金: 25469.70 | 月供: 8560.75 | 月供本金: 8419.54 | 月供利息: 141.21
期数: 10 | 剩余本金: 17015.08 | 月供: 8560.75 | 月供本金: 8454.62 | 月供利息: 106.12
期数: 11 | 剩余本金: 8525.23 | 月供: 8560.75 | 月供本金: 8489.85 | 月供利息: 70.90
期数: 12 | 剩余本金: -0.00 | 月供: 8560.75 | 月供本金: 8525.23 | 月供利息: 35.52
等额本金:
等额本息: