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

时间:2009-12-19 21:04:31

标签: delphi math delphi-2010 financial

我正在尝试计算以下情况的每月付款:

5,000美元借款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

结果是正确的,除非它是否定的。

为什么Payment函数的结果会返回负数?

3 个答案:

答案 0 :(得分:8)

负值是预期的。如果运行Excel的PMT功能,您将看到相同的结果。

该功能在钱的方向之间取得平衡。负号表示您正在为借入的资金支付资金(函数调用中的正值)。如果在函数中切换为负值(即-5000和-1000),则结果为正。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

5000要变成1000,你必须取走一些东西,而不是添加它。由于您是付款而未收到,因此您应该预期会有负数。