编程实现:
王先生从银行贷了350,000元用于买房,贷款期限为20年
⑴用等额本息还款法,计算每月应还本息(每月月供)、20年总利息?
⑵用等额本金还款法,计算每月应还本息(每月月供)、20年总利息?
⑶比较两种还款方法,哪种利息多?
2021年贷款利率 年利率(%)
一至三年(含3年) 贷款 4.75
三至五年(含5年) 贷款 4.75
五年以上 贷款 4.90
公积金贷款利率表
五年以下 贷款 2.75
五年以上 贷款 3.25
银行住房贷款计算方法
1、等额本息还款法:
个人购房抵押贷款期限一般都在一年以上,则还款的方式之一是等额本息还款法,即从使用贷款的第二个月起,每月以相等的额度平均偿还贷款本金和利息。计算公式如下:
P:贷款本金 R:月利率 N:还款期数 其中:还款期数=贷款年限×12
每月应还本息 =总利息=还款期数×每月月供额-贷款本金
2、等额本金还款法:
等额本金还款方式比较简单。顾名思义,这种方式下,每次还款的本金还款数是一样的,每月应还利息不一样,每月的利息是递减的,因此,等额本金还款每个月的还款额是不一样的。开始还得多,而后逐月递减。计算公式如下:
P:贷款本金 R:月利率 N:还款期数 其中:还款期数=贷款年限×12
每月月供额=每月应还本金+当月应还利息
=(贷款本金÷还款期数)+(贷款本金-已归还本金累计额)×月利率
每月应还本金=贷款本金÷还款期数
第M月应还利息=剩余本金×月利率=(贷款本金-已归还本金累计额)×月利率
=贷款本金×月利率-月还本金×月利率×(M-1)
总利息=贷款本金×月利率×(还款期数+1)÷2
#include <stdio.h>
#include <math.h>
int main()
{
int P = 350000, N = 240;
int x = P / N;
float R = 0.049;
float rmb = (P * R / 12 * pow(1 + R / 12, N)) / (pow(1 + R / 12, N) - 1);
float r1 = N * rmb - P;
printf("(1)用等额本息还款法,每月应还本息为:%.2f元, 总利息为:%.2f元。\n\n",rmb,r1);
int M = 0;
printf("(2)用等额本金还款法,每月应还本息为:\n");
for (M = 1; M <= 240; M++)
{
float m = x + P * (R / 12) - x * (R / 12) * (M - 1);
printf("第%d月应还本息为:%.2f元\n", M, m);
}
float r2 = P * (R / 12) * (N + 1) / 2;
printf("总利息为%.2f\n\n", r2);
if (r1 > r2)
{
printf("(3)比较两种还款方法,等额本息还款总利息多。\n");
}
else
{
printf("(3)比较两种还款方法,等额本金还款总利息多。\n");
}
return 0;
}