我有一个用Java处理银行账户的程序,一个功能就是有一个SavingHelper。现在,它将执行以下操作:计算在用户以特定利率达到目标之前所需的时间。所以用户不会添加任何东西,只能等到兴趣使他的平衡成为他的目标。
以下是我尝试过的代码:
public void savingsHelper(double goal, double rate)
{
double amount;
for (amount = 1; amount + balance < goal; amount+=1){
System.out.println(amount);
}
double time = (amount*100)/(balance*rate);
System.out.format("(amount*100)/(balance*rate) = (%.0f*100)/(%.2f*%.2f) = %.2f%n", amount, balance, rate, time);
System.out.format("To reach %.2f$ from %.2f$ it would take %.2f month(s) at an interest rate of %.2f%%. %n", goal, balance, time, rate);
}
打印出来的内容:
...
396.0
397.0
398.0
(amount*100)/(balance*rate) = (399*100)/(1101.00*1.01) = 35.88
To reach 1500.00$ from 1101.00$ it would take 35.88 month(s) at an interest rate of 1.01%.
但我认为36.36个月似乎不正确。此外,它只计算开始时的余额利息(在这种情况下为1101美元),而不是在每增加一美元之后。
这是我计算兴趣的方式:
public double interest(double time, double rate) //In my case: time = 7 (months), rate = 1.01;
{
double interest = balance * time * rate / 100;
balance = balance + interest;
return interest;
}
任何人都可以帮助我吗?
答案 0 :(得分:0)
将您的值插入到复合兴趣的公式中,您将获得goal = balance*rate^x
。如果你为x
解决了这个问题,你会得到你需要的公式。 x
是达到目标所需的时间单位(您的利率应用于余额的次数,可以这么说)。请注意,如果您的利率为1%,则需要使用1.01作为rate
变量。