如何在ruby中构建一个摊销表?

时间:2015-05-18 14:09:28

标签: ruby

我正在尝试在Ruby中构建一个摊销表: Calulcate每月付款。 每月利息成本。 显示付款实际减少了多少贷款余额 (或你欠的金额)。 该表显示了如何以及何时还清贷款。 计算出任意数量的付款后欠多少钱。 比较贷款优惠,了解每笔贷款支付的利息等。 为了解决这个问题,我想创建两个空数组,一个数组将保存所有月值,第二个数组将保存所有月数组。 loan_amount = 250000 率= 0.035 期间= 60 loan_time = 5年 periods.times do | period |  #每月付款  monthly_payment = loan_amount *((费率*(1 +费率)**期间)/((1 +费率)**期间 - 1)) 结束 如何减少红宝石中的值? 例如我需要用月付款减少loan_amount

2 个答案:

答案 0 :(得分:3)

如果您要在每次循环计算付款时,您还要减少期限并保持欠款金额。像这样:

periods.times do |period|

   # the monthly payment
    monthly_payment = loan_amount * ( (rate * ( 1 + rate)**periods)  / ( ( 1 + rate )**periods - 1) )

    periods -= 1
    loan_amount = loan_amount * (1 + rate) - monthly_payment
end

您应该注意到每月付款保持不变。你可以在循环之前真正计算它然后看起来像这样:

# the monthly payment
monthly_payment = loan_amount * ( (rate * ( 1 + rate)**periods)  / ( ( 1 + rate )**periods - 1) )

periods.times do |period|
    loan_amount = loan_amount * (1 + rate) - monthly_payment
end

然后loan_amount将是每个月末的欠款。

如果付款看起来很高,那是因为您的利率可能是年利率,可以除以12。

答案 1 :(得分:0)

periods.times do |period|

 # the monthly payment
 loan_amount = loan_amount - 1
 # loan_amount -= 1 #this is better
 monthly_payment = loan_amount *( (rate * ( 1 + rate)**periods)  / ( ( 1 + rate )**periods - 1) )

end