16-Nov-2010收到建行的短信:
26-Nov-2010收到建行的短信:
我自己计算过:
def dengEBenJin = {amount, month, r-> (1..month).each{ def fixed = amount / month def pay = fixed + ( amount - ( it - 1 ) * fixed ) * r println "Month ${it} : 总额: $amount, 本月还款: $pay" } } dengEBenJin(600000, 120, 0.003375)
它的结果为:
Month 1 : 总额: 600000, 本月还款: 7025.000000
Month 2 : 总额: 600000, 本月还款: 7008.125000
//...
为什么跟它说的6073.00不一致呢?
我拨打95533咨询,贷款金额和还款期数以及利率都跟贷款合同上写的完全一致,客服小姐大概不怎么会计算,她告诉我本金部分是600000/120=5000,利息部分会少于一个月的利息,因为第一次还款日跟贷款日相差不满一个月。
哦,原来如此。但是我还是要验证一下:
def dateLoaned = new Date('15-Nov-2010') def dateOfFirstPayment = new Date('01-Dec-2010') def amount = 600000, months = 120, rate = 0.003375 def fixedPayment = amount/months def firstPayment = fixedPayment + amount * rate * ( dateOfFirstPayment - dateLoaned ) / 30 println firstPayment
结果是:
6080.000000
还是跟建行的计算结果6073.00不一致,相差7块钱。我推测:是不是建行不按“整天”来计算呢?经过数次使用“逼近法”试出:建行这笔贷款确切的入账时间应该是15-Nov-2010 02:30:00左右。有代码为证:
def dateLoaned = new Date( '15-Nov-2010 02:30:00' ) def dateOfFirstPayment = new Date( '01-Dec-2010 00:00:00' ) def amount = 600000, months = 120, rate = 0.003375 def fixedPayment = amount/months def firstPayment = fixedPayment + amount * rate * ( dateOfFirstPayment.time - dateLoaned.time ) / ( 24*3600000 ) / 30 println firstPayment
打出的结果为:
6072.968750,最接近6073.00