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.
我希望它能显示我每月需要付多少钱。
答案 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));
}