贷款计算器复利息java

时间:2014-05-23 07:23:30

标签: java

double a = Double.parseDouble(amount.getText());
double r = Double.parseDouble(rate.getText())/100;
double y = Double.parseDouble(years.getText());
double m=y*12;
double simple =a+(a*r*y);
double compound = a * Math.pow(1+ r, m);
String d = String.format("%.2f", simple);
String d1 = String.format("%.2f", simple/12);
String d2 = String.format("%.2f", compound);
int x=1;

while(x<=m && type.getSelectedItem().equals("Simple")) {
     monthly1.append(String.valueOf(x+(". ")+d1+("\n"))); 
     x++;
     total1.setText(String.valueOf(d));
}

if (type.getSelectedItem().equals("Compound")){
    for (int month=1;month<=m;month++){
       monthly2.append(String.valueOf(month+(". ")+d2+"\n"));
       total2.setText(String.valueOf(d2));
     } 
}

简单的兴趣很好但每月复合并不好。我试过了

  

金额:1000比率:5年3.

得到了

1. 5791.82
2. 5791.82
3. 5791.82

up to 60.

我希望它能显示我每月需要付多少钱。

2 个答案:

答案 0 :(得分:1)

您似乎只在代码的最开始处计算compound一次。我创建了一个方法calculateCompoundInterest(int month),然后在循环中调用它,如下所示:

for (int month=1; month <= m; month++) {
    String monthlyAmount = String.format("%.2f", calculateCompoundInterest(month));
    monthly2.append(String.valueOf(month+(". ")+monthlyAmount+"\n"));
    total2.setText(String.valueOf(d2));
} 

答案 1 :(得分:1)

您正在错误地计算每月利息。

如果每月复合,

公式a* Math.pow(1+r,y)需要像a* Math.pow(1+r/12,y*12)一样应用。你需要转换你的费率以及在公式中使用。

Please see this有关公式的更多解释。

以下是帮助您入门的代码:

for (int month=1;month<=m;month++){
   d2 = String.format("%.2f",a * Math.pow(1+ r/12, month));
   monthly2.append(String.valueOf(month+(". ")+d2+"\n"));
   total2.setText(String.valueOf(d2));
 }