import kotlin.math.pow

//剩余贷款金额  初始化为总贷款数 一百万
var totalLoad: Double = 1000000.0

//剩余月供期数  初始化为贷款期限  30 年
var cycle: Double = 360.0

//真是贷款期限
var totalCycle: Int = 360

//年利率  真实年利率  加点浮动可以自己计算  2019 上浮 10%
val yearRate = 0.0539

//月利率
val mouthRate = yearRate / 12


//选算出来月供  [借款金额×月利率×(1+月利率)^借款月数]÷[(1+月利率)^借款月数-1]  固定公式
val monthlyPayment = (totalLoad * mouthRate * (1 + mouthRate).pow(cycle)) / ((1 + mouthRate).pow(cycle) - 1)

//第一个月的利息
fun main() {
    var beans = ArrayList<Bean>()
    for (i in 1..totalCycle) {
        beans.add(Bean(i))
    }
}

internal class Bean(index: Int) {
    init {
        //每个月利息为 本月还未还款金额乘月利率
        var mouthInterest = totalLoad * mouthRate
        //本月 月供减去利息 就是还的本金
        var mouthPrincipal = monthlyPayment - totalLoad * mouthRate
        // 总欠款-本月还款本金 为下个月待还本金
        var remaining = totalLoad - mouthPrincipal

        if (remaining <= 0) {//最后不欠钱了
            remaining = 0.0
        }
        System.out.println("(${index}月还本金${mouthPrincipal}, 本月利息=${mouthInterest},  剩余未还本金=${remaining})")

        //本金降低 这个月的本金
        totalLoad = remaining
        //月供期数变少
        cycle--
    }
}
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐