等额本息贷款计算方式如下:
x=ab (1+b)^m / [ (1+b)^m-1]。
所以,在贷款中,只要知道了贷款总额、月利率、分期数,就可以将数字带入公式计算出每月还款额多少了,而贷款总利息=每月还款额*分期数-贷款总额,所以等额本息方式下的总利息也就可以计算出来了。
参考以下连接:
https://zhuanlan.zhihu.com/p/390581715
以上是按照月利率计算的每月还款金额,实际生活中每月的天数有时候是不一样的,还有的第一期的实际占用天数(例如40天的)>31 那么用以上公式计算出来就会有误差。那么如何计算更准确呢?
假设 总金额为a日利率为b,每月第c天还款,总期数为m。
有贷款日期和还款日期所以可以计算出
第一期占用天数day1
第二期占用天数day2
第三期占用天数day3
第m期占用天数daym
由于等额本息每月还款相同所以设每月还款为X,所以根据以上的信息计算出X的值即可。
第一期还完后剩余本金=a-(x-day1 x b)
第二期还完后剩余本金=[a-(x-day1 x b)] -(x-day2 x b)
第三期还完后剩余本金=[[a-(x-day1 x b)] -(x-day2 x b)]-(x-day3 x b)
第m期还完后剩余本金应该为零所有
0=[[[a-(x-day1 x b)] -(x-day2 x b)]-(x-day3 x b) …(x-daym-1 x b)]- (x-daym x b)
以上公式就是关于x的一元一次方式
对以上公式求解即得出每月x的值。使用pythonj完成以上内用代码如下
from datetime import datetime, time
from sympy import *
def get(day_num,num,ri,be):
"""
此函数计算的是第一期为实际天数>31天的情况
day_num还款日期,还款日期必须为28号之前
num还款期数
ri=日利率
be=本金
"""
now = datetime.now()
now_str = now.strftime("%Y-%m-%d")
c=datetime.strptime(now_str, "%Y-%m-%d")
year=now.year
month = now.month
day = now.day
a_list=[]
sum=0
x=symbols('x')
while num+1:
if month-12==0:
month=1
year=year+1
else:
month=month+1
num=num-1
a=str(year)+'-'+str(month)+'-'+str(day_num)
b=datetime.strptime(a, "%Y-%m-%d")
days1=0
if sum>0:
if sum==1:
days1=(b-c).days
if sum>1:
days1=(b-c).days
# print(days1)
be=be-x+days1*ri*be
# print(be)
c=b
sum+=1
print(solve(be,x))
get(2,12,0.00035,20000)
比如我是2024.11.26点击借呗借20000元 日利率为0.00035,共12期,首月还款日为2025.01.02号则还款账单为下图。
用上述python函数测试每月还款金额为下图。