2015-02-10 127 views
0

我想用一个给定的公式制作一个支付计算器的java。 我使用的公式是M = P * i/1-(1 + i)^ - n 其中P是贷款本金(即借入的金额) i是月利率(annual_interest_rate/12;表示为十进制) N是时间(贷款总年度中的每月支付数量;即年* 12) 下面的代码是我获取每月支付的函数。 如果我在6年的贷款额度200我得到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))); 
    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? 'P * i/1' – Aradmey 2015-02-10 20:05:25

回答

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))); 
1

如果我理解你的配方,它应该是:

m = loanAmt * interest - Math.pow(1 + interest, -months);