【问题标题】:PHP Mortgage Calculator CanadaPHP抵押贷款计算器加拿大
【发布时间】:2012-05-31 15:04:08
【问题描述】:

我刚刚发现了一个抵押计算器功能:

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 计算器进行比较,我的功能似乎与其他 2 个网站上的功能不完全一样,结果是 895,93$。

谁能帮我弄清楚为什么它没有返回好金额?

非常感谢

【问题讨论】:

  • 你在哪里找到这个功能的?是否正确考虑了复利?查看此链接——我将在此站点下载 excel 电子表格并“逆向工程”计算。 yorku.ca/amarshal/mortgage.htm
  • 我发现另一个网站的计算方法和你一样。我猜可能存在四舍五入的问题,因为如果你四舍五入到 4 位,而他们四舍五入到 6 位,你可能会少一些钱。网站:bankrate.com/calculators/mortgages/…
  • 任何提供货币汇率的网站都可能会“滑倒”一点;只是为了测试,我从 currencyfeed.com 和 yahoo apis 提取了 1 欧元兑美元的当前数据,结果是:1.2537、1.2524。
  • @jeschafe 非常感谢您的链接,它真的很有帮助:)

标签: php formula calculator


【解决方案1】:

我已将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);

【讨论】:

【解决方案2】:

不是按月复利,而是每 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

【讨论】:

    【解决方案3】:

    你的计算没问题 - 看看这个抵押计算器:http://aprc.eu/index.php?page=APR-loan-calculator

    您的结果与引用的银行计算器的差异源于不同的假设。您使用的公式是在月底每月付款。如果付款是在月初进行的,则 iterests 较低,因此付款也可能较低。

    【讨论】:

      猜你喜欢
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-13
      • 2015-06-30
      • 1970-01-01
      • 2013-06-10
      • 1970-01-01
      相关资源
      最近更新 更多