2015-02-10 126 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);