我应该用给定的公式在java中制作月度付款计算器。 我使用的公式是
M = P * i / 1 - (1 + i)^ - n
,其中
以下代码是我尝试获得每月付款的功能。
但是,如果我在贷款金额为200的情况下投入6年,我会使用公式获得140。 我很难过为什么我得到那个号码。任何帮助将不胜感激
public static int calMonthlyPay(double loanAmt, int y) {
double m = 0.0, interest = 0.0, annualIRate = 0.0;
double months = 0.0;
months = y * 12;
annualIRate = getAnnualIRate(y);
interest = annualIRate / 12;
System.out.println(interest);
System.out.println(months);
System.out.println(loanAmt);
System.out.println(y);
m = (loanAmt * (interest - Math.pow((1 + interest), -months))); // This is my formula calculation
System.out.println(m);
return 0;
}
private static double getAnnualIRate(int y) {
switch (y) {
case 2:
return 5.7;
case 3:
return 6.2;
case 4:
return 6.8;
case 5:
return 7.5;
case 6:
return 8.4;
default:
return 8.4;
}
}
答案 0 :(得分:1)
如果我理解你的公式是正确的,那应该是:
m = loanAmt * interest - Math.pow(1 + interest, -months);
答案 1 :(得分:0)
你现在拥有的是:
m = (loanAmt * (interest / 1 - Math.pow((1 + interest), -months))) =
(loanAmt * (interest - Math.pow((1 + interest), -months)))
您应该正确使用括号:
m = loanAmt * (interest / (1 - Math.pow(1 + interest, -months)));
答案 2 :(得分:0)
您的公式不正确,必须是
class Foo {
//@ts-ignore
greet(str: string): void;
@methodOverride
greet(x: number) {
console.log("Hello, World");
}
}
let foo = new Foo();
foo.greet("FooBar"); // okay, no error
兴趣值公式中有一个错误,它必须是
loanAmt * (interest / (1 - Math.pow (1 + interest, -months)));
所以您的方法interest = annualIRate / 100 / 12;
现在给出3,这是正确的。