PHP, JavaScript, Ajax, jQuery, ActionScript, Flex, AIR, Facebook App, Linux, Apache, MySQL...

2010年2月27日 星期六

[PHP]實現Excel函數 PMT(年金)及PV(現值)的計算

Excel提供了下列非常實用的財務函數:PV(現值)、PMT(年金),要如何利用PHP來取得這兩種值呢?在這裡提供兩個function,使用方法與Excel一模一樣。
  • PMT函數的參數定義如下:

    PMT(rate, nper, pv, fv, type)
    rate:每期利率
    nper:期數
    pv:單筆之期初金額
    fv:單筆之期末金額
    type:0=期末(預設),1=期初

    PHP程式碼:
    function get_pmt($rate = 0, $nper = 0, $pv = 0, $fv = 0, $type = 0) 
    {
     if ($type != 0 && $type != 1) 
     {
      return false;
     }
     
     // Calculate
     if (!is_null($rate) && $rate != 0) 
     {
      return (-$fv - $pv * pow(1 + $rate, $nper)) / (1 + $rate * $type) / ((pow(1 + $rate, $nper) - 1) / $rate);
     } else {
      return (-$pv - $fv) / $nper;
     }
    }
    
  • PV函數的參數定義如下:

    PV(rate, nper, pmt, fv, type)
    rate:每期利率
    nper:期數
    pmt:年金之每期金額
    fv:單筆之期末金額
    type:0=期末(預設),1=期初

    PHP程式碼:
    function get_pv($rate, $nper, $pmt, $fv = 0, $type = 0)
    {
     if ($type != 0 && $type != 1) 
     {
      return false;
     }
     // Calculate
     if (!is_null($rate) && $rate != 0) 
     {
      $pv = -(($fv + $pmt * (1 + $rate * $type) * ((pow(1 + $rate, $nper) - 1) / $rate)) /  pow(1 + $rate, $nper));
     } else {
      $pv = -($pmt*$nper+$fv);
     }
     return round($pv);
    }
    

0 意見:

張貼留言