2012-05-25 33 views
1

我只是找到了一個抵押貸款計算器功能:PHP房貸計算器加拿大

function calculatePayment($price, $down, $term) 
{ 
$loan = $price - $down; 
$rate = (2.5/100)/12; 
$month = $term * 12; 
$payment = floor(($loan*$rate/(1-pow(1+$rate,(-1*$month))))*100)/100; 
return $payment; 
} 

所以,如果我做的:

calculatePayment(200000,0,25) 

還給我897.23 $。

問題是,如果我與BMO銀行或duproprio.com計算器進行比較,看起來我的功能並不像其他兩個網站那樣工作,結果是895,93 $。

有人可以幫我找出它爲什麼不返回良好的金額?

非常感謝

+0

你從哪裏找到這個功能?它是否正確地考慮了複合?看看這個鏈接 - 我會在這個網站上下載excel電子表格,然後「逆向工程」計算。 http://www.yorku.ca/amarshal/mortgage.htm –

+1

我發現另一個網站與您的計算方法相同。我猜可能會有一個四捨五入的問題,因爲如果你四捨五入到四個地方,那麼只有一對夫婦會消失,而他們到了六點你可能會有點偏離。網站: http://www.bankrate.com/calculators/mortgages/mortgage-calculator.aspx?MSA = 1010 – jeschafe

+0

任何提供貨幣兌換率的網站都可能「滑」一下;只是爲了進行測試,我從currencyfeed.com和yahoo apis以1歐元兌美元的價格提取了當前數據,結果爲:1.2537,1.2524。 – 2012-05-25 03:20:54

回答

1

,而不是按月複利,化合物按揭每6個月。

加拿大抵押貸款是每6個月複合一次而不是每月。

除可變利率抵押貸款外,所有抵押貸款按法律每半年合併一次。因此,如果您按揭貸款的利率爲6%,抵押貸款的實際年利率實際上爲6.09%,按半年每年3%計算。但是,您每月都要支付利息,所以按揭貸款人需要按照低於6%的年利率計算每月的利率。爲什麼?因爲這個速度會每月複合。因此,我們需要找出每月複合的比率,導致有效的年率爲6.09%。數學上,這將是:

(1 + RM)12-1 = 0.0609

RM =(1.0609)1/12

RM = 0.493862 ...%

來源:http://www.yorku.ca/amarshal/mortgage.htm

2

我將http://www.secureapp.com/tools/mortgage.html的餘額計算部分轉換爲PHP函數(也添加了預付定金變量)並給出了一個用法示例:

$principal = 684000; //Mortgage Amount 
$interest_rate = 2.89; //Interest Rate % 
$down = $principal *0.10; //10% down payment 
$years = 25; 
$months = 0; 
$compound = 2; //compound is always set to 2 
$frequency = 12; //Number of months (Monthly (12), Semi-Monthly (24), Bi-Weekly(26) and Weekly(52) 

function calcPay($MORTGAGE, $AMORTYEARS, $AMORTMONTHS, $INRATE, $COMPOUND, $FREQ, $DOWN){ 
$MORTGAGE = $MORTGAGE - $DOWN; 
$compound = $COMPOUND/12; 
$monTime = ($AMORTYEARS * 12) + (1 * $AMORTMONTHS); 
$RATE = ($INRATE*1.0)/100; 
$yrRate = $RATE/$COMPOUND; 
$rdefine = pow((1.0 + $yrRate),$compound)-1.0; 
$PAYMENT = ($MORTGAGE*$rdefine * (pow((1.0 + $rdefine),$monTime)))/((pow((1.0 + $rdefine),$monTime)) - 1.0); 
if($FREQ==12){ 
    return $PAYMENT;} 
if($FREQ==26){ 
    return $PAYMENT/2.0;} 
if($FREQ==52){ 
    return $PAYMENT/4.0;} 
if($FREQ==24){ 
    $compound2 = $COMPOUND/$FREQ; 
    $monTime2 = ($AMORTYEARS * $FREQ) + ($AMORTMONTHS * 2); 
    $rdefine2 = pow((1.0 + $yrRate),$compound2)-1.0; 
    $PAYMENT2 = ($MORTGAGE*$rdefine2 * (pow((1.0 + $rdefine2),$monTime2)))/ ((pow((1.0 + $rdefine2),$monTime2)) - 1.0); 
    return $PAYMENT2; 
} 
} 

$payment = calcPay($principal, $years, $months, $interest_rate, $compound, $frequency, $down); 
0

你的計算確定 - SE這房貸計算器:http://aprc.eu/index.php?page=APR-loan-calculator

你的結果的差異,並列舉銀行calcultor從不同的假設造成的。您使用的公式爲每月付款,該月末爲。如果在月份的開始處支付款項爲,則迭代次數較低,因此付款也可能較低。