Почему функция Delphi Math.Payment возвращает отрицательный номер - PullRequest
0 голосов
/ 20 декабря 2009

Я пытаюсь рассчитать ежемесячный платеж по следующему сценарию:

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

Результат правильный, кроме отрицательного.

Почему результат функции Payment возвращает отрицательное число?

Ответы [ 3 ]

8 голосов
/ 20 декабря 2009

Ожидается отрицательное значение. Если вы запустите функцию PMT в Excel, вы увидите тот же результат.

Функция балансирует направление движения денег. Знак «минус» означает, что вы выплачиваете деньги за заемные средства (положительные значения в вызове функции). Если вы переключитесь на отрицательные значения в функции (т.е. -5000 и -1000), то результат будет положительным.

1 голос
/ 20 декабря 2009

Чтобы 5000 стал 1000, нужно что-то убрать, а не добавить к этому. Поскольку вы платите, а не получаете, вы должны ожидать отрицательную сумму.

1 голос
/ 20 декабря 2009

Поскольку вы одолжили деньги, вы можете попробовать с ** - ** 5000 и ** - ** 1000?

...