如何计算没有年度条款的原始贷款金额?

时间:2018-01-02 10:10:38

标签: ruby math finance

https://www.moneysmart.gov.au/tools-and-resources/calculators-and-apps/savings-goals-calculator

当我选择时,我想得到像上面的计算器一样的结果:

我想保存: 6000
我想花钱:尽快
起始余额: 0
利率: 10%
定期节省: 1000每月

但是我使用这段代码得不到正确的结果:

  loan = 6000.0
  interest = 10.0
  monthly_payment = 1000.0
  i =0.0
  record = []
  count = 1
  add_interst = 0.0
  while( loan>=0)
    i = interest/(100*12)*loan
    loan=i+(loan)-(monthly_payment);   
    add_interst = add_interst + i
  end
  puts add_interst

我收到的181.42163384701658应为168。我不知道我错在哪里。

1 个答案:

答案 0 :(得分:2)

代码不起作用,因为您正在执行与您引用的链接相反的操作。他们计算的是节省利息,你计算的是贷款利息。

基本上,这就是你应该如何定义变量。另外,正如其他人指出的那样,使用BigDecimal计算金钱是好的:

require 'bigdecimal'
balance = 0.to_d
interest = 10.to_d/1200.to_d
regular_saving = 1000;
goal =6000;
i = 0;
added_interest = 0

所以,为了纠正问题,你必须从starting balance开始(即0)并开始递增。像这样:

while balance < goal
    balance += regular_saving;
    i  = balance * (interest);
    balance +=i;
    added_interest+=i;
end

另请注意,在去年您无需支付全部保存金额。您只需付费即可达到目标。为此,您需要添加条件语句来检查goal - balance < regular_saving。如果是这种情况,利息应根据应支付的余额计算(略低于目标)。