代码之家  ›  专栏  ›  技术社区  ›  Michael Riley - AKA Gunny

为什么Delphi的Math.Payment函数返回负数

  •  0
  • Michael Riley - AKA Gunny  · 技术社区  · 16 年前

    我正在尝试计算以下场景的每月付款:

    5000美元的借款期限为3年,每月复利8.00%,到期日为1000美元。

    /*
    From Math.pas 
    function Payment(Rate: Extended;
     NPeriods: Integer;
     const PresentValue: Extended;
     const FutureValue: Extended;
     PaymentTime: TPaymentTime): Extended;
    */
    
    var
      Pmt : Extended;
    begin
      Pmt := Payment(0.08/12,36,5000,1000,ptEndOfPeriod);
      Edit1.Text := FloatToStr(Pmt);
    end
    

    结果= -181.351526101918



    3 回复  |  直到 16 年前
        1
  •  8
  •   Mark Elder    16 年前

    预期为负值。如果运行Excel的PMT函数,您将看到相同的结果。

    该函数在资金流向之间进行平衡。负号表示您正在用借来的钱(函数调用中的正值)支付款项。如果在函数中切换为负值(即-5000和-1000),则结果将为正值。

        2
  •  1
  •   Peter Lang    16 年前

    既然你借了钱,你能试试**-**5000和**-**1000吗?

        3
  •  1
  •   Vegar    16 年前

    要让5000变成1000,你必须拿走一些东西,而不是增加。由于您正在付款而没有收到,因此您应该预期负金额。