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
。我不知道我错在哪里。
答案 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
。如果是这种情况,利息应根据应支付的余额计算(略低于目标)。