Savingshelper银行账户 - 计算目标所需的时间

时间:2014-12-12 16:48:51

标签: java save banking

我有一个用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;        
}

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

将您的值插入到复合兴趣的公式中,您将获得goal = balance*rate^x。如果你为x解决了这个问题,你会得到你需要的公式。 x是达到目标所需的时间单位(您的利率应用于余额的次数,可以这么说)。请注意,如果您的利率为1%,则需要使用1.01作为rate变量。