生活中的计算--贷款还款计算

计算贷款还款

等额本金与等额本息贷款

银行提供的贷款一般有两种分期付款方式:等额本金和等额本息,等额本金是指每个月还的本金都是一样的,利息是动态变化的,随着每期归还本金不断递减。等额本息是指还款总额(本金+利息)均等地分摊到每个月,即每个月还款额都是一样。

假设贷款总额为B,银行月利率为y,还款总期数为m(月),第j个月还款额为hj,第j个月已还款累计总额为Hj,下面给出了两种贷款方式的还款公式。

等额本金每月的还款公式:

hj = B/m + (B - Hj)*y

等额本息的月还款公式:

h = B * y * (1+y)**m / ((1+y)**m - 1)

从公式可以看出,等额本金还款需要每个月单独计算,每个月还款的第一项是不变的,称为本金还款,第二项是变化的,是利息还款,利息还款随着还款时间推进而不断减少。等额本息每个月的还款额是相同的,只需要计算一次。

计算还款Python程序

def repay(b, y, r, mode=1):
    “”"
    按贷款总额、利率、年限、方式,进行月还款与利息计算

     :parameter
     :param b:float 贷款总额
     :param y:int 还款年数,正整数
     :param r:float 年利率
     :param mode:int 还款方式,1–等额本金, 2–等额本息

     :return:tuple
     (month_repay: list, total_repay: float, total_interest: float)
     (月还款,总还款,总利息)

     # 示例1:使用等额本息方式
     >>> r1 = repay(2000000, 30, 0.049, mode=1)
     >>> round(r1.month_repay[0], 2)
     13722.22
     >>> round(r1.total_repay, 2)
     3474083.33
     >>> round(r1.total_interest, 2)
     1474083.33
     # 示例2:使用等额本息方式
     >>> r2 = repay(2000000, 30, 0.049, mode=2)
     >>> format(r2.month_repay[0], ‘.2f’)
     ‘10614.53’
     “”"
     # 还款月数、月息
     m = y * 12
     mr = r / 12
     # 计算月还款
     if mode == 1:
           # 等额本金方式每月本金、利息、还款
           month_principle = [b/m] * m
            month_interest = [(b - b/m * j) * mr for j in range(m)]
           month_repay = [x+y for x, y in zip(month_principle, month_interest)]
     elif mode == 2:
           # 等额本息方式月还款
           month_repay = [(b * mr * (1 + mr) ** m) / ((1 + mr) ** m - 1)] * m
     else:
           # 无效模式
           raise ValueError(‘Invalid Mode: {}’.format(mode))
     # 总还款
     total_repay = sum(month_repay)
     # 总利息
     total_interest = total_repay - b
     # 计算结果的命名元组
     return (month_repay, total_repay, total_interest)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值