程序员用代码告诉你,为什么你的房贷还了几年,却大多都是利息!-房贷一次性还清需要付多少利息
最近看到一个事情,说得有个哥们还了好几年房贷,然后房贷压力太大了,于是他想一次性还清房贷,去了银行一算,原来他这几年还得大部分都是利息。看到这条消息,正好我身上也有一点短期贷款,以前只知道贷款,还真没有想过每个月还的钱到底是怎么组成的,于是我就去看了下。结果不看不知道,虽然没有他那么夸张,但是每月还款的时候,的确是最开始的时候利息多一点!
等额本金算法
通过研究每月所还贷款,我发现了一个规律,通过研究规律,我很快就理解了为什么很多贷款刚开始的时候利息很高,甚至和本金持平。
算法也很简单,我们举个例子,假设你借了别人10元钱,分10天还,每天还需要付10%的利息,这时候第一天还1元,利息1元,所以得还2元,还剩9块没还,第二天还1块,利息0.9元,还剩8块没还,第三天还1元,利息0.8元,还剩7元没还……
可能很多人到这里压根就算不清楚自己连本带息总共还了多少,所以,我写了一个程序,专门用来算这个10元钱到底在还清的那一天,我们连本带息总共还了多少!
注意:下文中所有代码看不懂请忽略,请直接看结果即可。
我惊讶得发现,10天后,我连本带息总共需要还15.5元!利息超过了本金的50%!而且,第一天的利息就超过了最后四天所还利息的总和!
其实说白了,我们很多人想当然得以为在算利息的时候,银行会将利息平摊到每个月里(就问你是不是这么想的),实际上这种算法是错的,它是根据当下剩余的未还金额来算利息的。当然,我也不懂金融算法,至少我现在身上的贷款利息差不多就是这么算的。
掌握好这个算法以后,我随便找了一个贷款平台,因为现在每个贷款平台都会在贷款计算器上显示每月应还款项的详情,比如我图片上这个:
该贷款平台借1万元,日利率为0.2 %,那么我们通过程序验证下我们的算法是不是正确的:
然后我就发现,虽然算出来的利息和平台算出来的利息差不多,但是还是稍有区别。仔细观察以后,我发现平台每月还款本金并不是按照我算的那样,使用本金除以还款期数来算的。刚开始的时候,本金还得较少,后面则本金占大头!如果不是这个贷款平台首月利息有优惠,那么很显然,我的这种算法是比较划算的。
此时,我想破脑袋也没有想到规律,为什么平台算出来的每月还款金额中,本金会越来越高。
但不管怎么说,这种算法的确会出现一种状况,那就是前期我们把大部分利息都还掉了,后期大部分还得都是本金。
既然我这种算法对于我们来说是比较划算的,我还是准备“搞点事情”,我想算算,如果我贷款100万买个房子,年利率按照4%算(日利率=年利率/365),最终算出来的日利率约为0.000109589%左右,分30年还的话,我30年后连本带息应该还多少!
说干就干,最终代码给我的答案是:连本带息共1600828.1元!
下面是代码和运行结果:
为了谨慎,我做了一个表格,用来显示接下来30年里,每个月我需要还的金额以及利息。
而到了这里,文中开头我所说的发生在那个哥们身上的事情开始有所体现了,这里有几个需要注意的地方。
首先,我们发现,除了首期因为不足一个月,利息较少,从第二个月开始,利息竟然是本金的一倍多,而这种情况持续了很久,至少到第44期,也就是2027年03月18日那一期,当月利息才首次低于本金,而前一个月恰好只有28天。
然后又持续了一年的利息超过本金的状况后,在第56期,也就是2028年03月18日,又迎来了第二次利息低于本金的时刻,而同样的,第56期还款的上一个月,正好也是2月份,这个2月为29天。
之后的几个月陆陆续续又迎来了好几次利息低于本金的时刻,最终在第65期开始,直至还款结束,利息均低于本金并逐年减少,最后一期的利息仅为不到10元!
而在第44期的时候, 已还本金122222.23元,已还利息142335.94元,在第66期的时候,已还本金180555.56,已还利息201852.38元。
这样看起来还不算离谱,但为了验证我的算法是否正确,我特地百度了一些贷款计算器类的软件,然后输入参数算了一下,发现那些结果和我算出来的差距并不大!
等额本息算法
我在验证数据的时候,我发现一个问题,那就是我其实算得一直是“逐月递减还款”,也就是等额本金的算法,看了这个贷款计算器以后,我前面关于每月本金不等额的疑虑打消了,原来是“每月等额本息还款”的原因。
等额本息还款说起来也很好理解,这里,我们可以稍微举个不太复杂的例子!
假设有某人借了10块,分3天还完,可以通过算法算出3天的总利息,假设总利息为1.5元,总应还金额就是11.5元。如果是等额还款,那么就只需要11.5元除以3,得到每天应还金额应该约为3.83元。
但是,因为利息是不变的,因此,第一天还款时,假设利率为10%,本金就变成了3.83 – 10 * 0.1= 2.83元,剩余7.17元本金未还,第二天还款时,还款本金应该为3.83 - 7.17 * 0.1 = 3.113,剩余 4.057本金。也就是说,使用等额本金的算法,前面基本上还得都是利息,后面还得才是本金!
前面我做了一个12个月的还款方案的代码实现,不是和平台算出来的有所差距吗?这次我们再利用刚才我们想到的逻辑再重新算下看看!因为数学不好,所以我直接拿平台算出来的每月应还数额来进行换算,这样的话,通过每个月的利息就可以算出和正确的本金结果大差不差的结果。
此时,您可能会发现,我通过代码算出来的本金已经非常接近平台的金额了,其中,利息部分小数后两位几乎和平台的一模一样,之所以和平台不一样,估计是因为小数点位数原因导致的,但目前的结果已经对总结果影响不大了。
于是还是以贷款100万,贷30年,年利率是4%,网上的贷款计算器算出来的结果是每月需还款4774.15元,那么我通过下面的代码,即可算出来接下来30年里每个月还款的本金和利息各是多少!
通过结果,我通过代码生成的总本金、利息、本金合计基本上和贷款计算器算出来的大差不差,说明虽然我算出来的可能不绝对正确,但是可以参考的!其中,我把最后一期省略掉了,因为不满足等额部分,但也就差1000元左右,不太影响金额计算。
于是,问题来了,您想不想知道,首期本金和利息分别占多少?
2023年08月01日 本金1376.8896,利息3397.2603元,这是首期本金和利息的数据!利息占了本金的两倍还多!
所以,我特别想知道,在什么时候本金和利息能持平!
从结果来看,首个本金超过利息的期数为127期,之后的一段时间内,139期、148期、151期、153期、155期本金都大于利息了,直至从158期开始,本金终于一直大于利息了!
直至倒数第二期,也就是第359期,本金合计4753.6514,利息合计20.498354元。
怎么样?看明白了吗?
每月等额本息其实就是要确保每月所还贷款金额是一样的,因为利息部分不能动,所以只能从本金上处理,所以就导致前期因为利息较高,本金部分占比就少了。而恰恰因为前面本金交得少,所以后期很长一段时间利息都下不来,并且越到最后本金所占的比重越大!总利息也相对高一些。
这就解释了为什么有人交了好几年房贷,最后提前还款发现自己本金实际上没有交多少,大部分钱都拿去交利息了!
而每月等额本金则是每个月还得本金都一样,因为每个月还得本金都一样多,所以每个月的利息会一直在降,即使到最后一期,那个月所需要还的本金和首月要还的本金还是差不多的!
而且,因为前期不仅每个月本金一样,利息也是按照总额度生成的,因此等额本金在初期每个月所需要还得贷款相对等额本息就多一些。具体可以参考我上面发的表。
结语
最后总结一下,如果您可能要提前还房贷,那么最好选择每月等额本金,因为等额本息在还贷初期大部分还得是利息,提前还款的话,相比等额本金要还得更多,如果不需要提前还房贷,想要初期每个月压力小一些,可以选择每月等额本息。而且,看似等额本金好像前期每个月的还款额度要高于等额本息,但是需要熬的时间也不会太久,基本上四五年之内还款的额度就会和等额本息差不多了,并且,后面所还金额会越来越少!
不知道我这么总结对不对?
文后一言:本人非相关专业人士,本文旨在使用代码更加直观表现贷款还款的情况,数据可能不准,敬请见谅!