前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >房贷计算之等额本金/等额本息计算

房贷计算之等额本金/等额本息计算

作者头像
大话swift
发布2019-07-04 11:12:53
8470
发布2019-07-04 11:12:53
举报
文章被收录于专栏:大话swift大话swift

房贷已经成为大家日常生活的一部分,还贷也是一个?的必备功课,那么购房时你是选择按照等额本金还是等额本息来进行还贷呢?

从今天开始我们开始通过运用设计模式作为载体来给您详细讲解房贷中的哪些事,让你房贷计算与学习双赢---搞懂房贷还款有掌握设计模式的技能……

好了,今天我们先来普及一下房贷的两种还款方式的计算过程---等额本息和等额本金

等额本息

等额本息,是指一种[贷款](https://baike.baidu.com/item/%E8%B4%B7%E6%AC%BE/1129285)的还款方式。等额本息是在还款期内,每月偿还同等数额的[贷款](https://baike.baidu.com/item/%E8%B4%B7%E6%AC%BE/1129285)(包括[本金](https://baike.baidu.com/item/%E6%9C%AC%E9%87%91/11025685)和利息)。它和等额本金是不一样的概念,虽然刚开始还款时每月还款额可能会低于等额本金还款方式的额度,但是最终所还利息会高于等额本金还款方式,该方式经常被银行使用。

等额本金

每月月供额=(贷款本金÷还款月数)+(贷款本金-已归还本金累计额)×月利率

每月应还本金=贷款本金÷还款月数

每月应还利息=剩余本金×月利率=(贷款本金-已归还本金累计额)×月利率

每月月供递减额=每月应还本金×月利率=贷款本金÷还款月数×月利率

总利息=〔(总贷款额÷还款月数+总贷款额×月利率)+总贷款额÷还款月数×(1+月利率)〕÷2×还款月数-总贷款额

前置预设

//贷款总额

var load = Double(1000000)

//贷款年限

let year = 30

//正常贷款利率

let normalLevel = Double(0.049)

//上浮

let up = Double(0.25)

//实际利率

let upLevel = normalLevel * (Double(1)+up)

//平均月利率

let monthLevel = upLevel / Double(12)

//等额本金月还款本金

var monthDiv = Double(load)/Double(year*12)

typealias Year = Int

extension Year{

var months:Int{

return self*12

}

}

extension Double{

func m(n:Int)->Double{

var totoal = self

for _ in 0 ..< n{

totoal = totoal*self

}

return totoal

}

}

计算过程

1 等额本金

/**

等额本金利息计算方法

等额本金每个月要归还的利息是根据当月未归还的本金计算出来的,所以计算起来比较简单。

等额本金当月利息=(贷款总额-累计已还本金)×月利率

每月归还本金=贷款总额÷归还月数

月利率=年利率÷12

等额本金总利息=(还款月数+1)×贷款总额×月利率÷2

我们通过举例说明等额本金利息怎么算的,例如张三向银行贷款10万元,期限为3年,分36期归还,年利率为6%。

月利率=6%÷12=0.5%

每月归还本金=100000÷36=2777.78元

第一个月利息=(100000-0)×0.5%=500元

第二个月利息=(100000-2777.78)×0.5%=486.11元

第三个月利息=(100000-2777.78×2)×0.5%=472.22元

由此可知,最后一个月的利息=(100000-2777.78×35)×0.5%=13.89元

等额本金总利息=(36+1)×100000×0.5%÷2=9250元

*/

for i in 0 ..< 30*12 {

//每月额度

let monthTotal = monthDiv + (load - monthDiv*Double(i)) * monthLevel

// 利息

let interest = (load - monthDiv*Double(i)) * monthLevel

// 剩余

let nextLoad = load - monthDiv*Double(I+1)

let monthMoney = MonthMoney(load: load, nextLoad:nextLoad, time: i, ben: monthDiv, interest: interest)

print("第\(i/12+1)年\(i%12+1)月===\(monthTotal) 本金\(monthDiv) 利息\(interest) 剩余\(nextLoad)")

}

等额本息

/**

解说: https://baike.baidu.com/item/等额本息还款法/8040344?fr=aladdin#1

*/

//每个月固定的还款额(推导算法看上面)

var x = load * monthLevel * ((Double(1)+monthLevel).m(n: 30*12)) / ((Double(1)+monthLevel).m(n: 30*12) - 1)

for i in 0 ..< 30*12 {

//剩余欠款总额

let am = load*(Double(1)+monthLevel).m(n: i)-x*((Double(1)+monthLevel).m(n: i)-1)/monthLevel

//剩余总额贷款月利息

let interest = am*monthLevel

let ben = x-am*monthLevel

let monthMoney = MonthMoney(load: load, nextLoad: am, time: i, ben: ben, interest: interest)

print(monthMoney)

// print("第\(i/12+1)年\(i%12+1)月===还款\(x) 本金\(ben) 利息\(interest)")

}

结果预览

等额本金

等额本息

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大话swift 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 等额本息
  • 等额本金
  • 前置预设
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档