Функция Rate
Обновлен: Ноябрь 2007
Возвращает значение типа Double, определяющее процентную ставку аннуитета.
Function Rate( _
ByVal NPer As Double, _
ByVal Pmt As Double, _
ByVal PV As Double, _
Optional ByVal FV As Double = 0, _
Optional ByVal Due As DueDate = DueDate.EndOfPeriod, _
Optional ByVal Guess As Double = 0.1 _
) As Double
Параметры
NPer
Обязательный параметр. Значение типа Double задает общее количество периодов платежей аннуитета. Например, при ежемесячных выплатах ссуды за автомобиль на протяжении 4 лет общее количество периодов выплат будет равно 4*12 (или 48).Pmt
Обязательный параметр. Значение типа Double, определяющее платеж за каждый период. Обычно платежи содержат основную сумму и проценты, которые не изменяются на протяжении периода действия аннуитета.PV
Обязательный параметр. Значение типа Double, задающее текущую сумму (или значение на сегодняшний день) набора предстоящих платежей или поступлений. Например, если для покупки автомобиля взят кредит, то эта сумма представляет собой текущее значение предстоящих ежемесячных платежей за автомобиль.FV
Необязательный параметр. Значение типа Double, задающее требуемую будущую сумму или баланс наличности после уплаты последнего платежа. Например, будущее значение ссуды равно 0 р., поскольку такова будет ее величина после последней выплаты. Однако если требуется собрать за 18 лет сумму в 1 500 000 р. на образование детям, то будущая сумма будет равна 1 500 000 р. Если этот аргумент опущен, используется значение 0.Due
Необязательный параметр. Объект типа Перечисление DueDate, указывающий время выплат. Этот аргумент должен быть либо DueDate.EndOfPeriod (если выплаты должны производиться в конце периода) или DueDate.BegOfPeriod (если выплаты должны производиться в начале периода). Если этот аргумент опущен, используется DueDate.EndOfPeriod.Guess
Необязательный параметр. Значение типа Double, задающее оцениваемое значение, которое будет возвращено функцией Rate. Если этот параметр опущен, используется значение Guess, равное 0,1 (10 процентам).
Исключения
Тип исключения |
Номер ошибки |
Условия |
---|---|---|
NPer <= 0. |
См. столбец "Номер ошибки", если выполняется обновление приложений Visual Basic 6.0, в которых используется неструктурированная обработка ошибок. (Можно сравнить номер ошибки с Свойство Number (объект Err).) Однако по возможности следует заменять такую систему управления ошибками на Обзор структурной обработки исключений в Visual Basic.
Заметки
Аннуитет представляет собой серию периодических фиксированных денежных выплат. Аннуитет может быть или платежом по ссуде (например, в случае ипотеки), или инвестицией (в случае ежемесячного сберегательного плана).
Для всех аргументов выплаченные суммы (например, сберегательные депозиты) обозначаются отрицательными числами, а полученные (например, чеки на дивиденды) — положительными.
Rate вычисляется путем итерации. Начиная с заданного в параметре Guess значения, функция Rate выполняет вычисления в цикле пока не будет получен результат с точностью 0,00001 процента. Если функции Rate не удается получить результат после 20 итераций, она завершается с ошибкой. Если величина параметра Guess составляет 10 процентов и функция Rate завершилась неудачно, следует попытаться использовать другое значение параметра.
Пример
В этом примере используется функция Rate для расчета процентной ставки займов по заданному общему числу платежей (TotPmts), сумме заемного платежа (Payment), текущей сумме или сумме займа (PVal), будущему значению ссуды (FVal), числу, определяющему был ли платеж внесен в начале, либо в конце периода оплаты (PayType) и приблизительной ожидаемой процентной ставке (Guess).
Sub TestRate()
Dim PVal, Payment, TotPmts, APR As Double
Dim PayType As DueDate
' Define percentage format.
Dim Fmt As String = "##0.00"
Dim Response As MsgBoxResult
' Usually 0 for a loan.
Dim FVal As Double = 0
' Guess of 10 percent.
Dim Guess As Double = 0.1
PVal = CDbl(InputBox("How much did you borrow?"))
Payment = CDbl(InputBox("What's your monthly payment?"))
TotPmts = CDbl(InputBox("How many monthly payments do you have to make?"))
Response = MsgBox("Do you make payments at the end of the month?", MsgBoxStyle.YesNo)
If Response = MsgBoxResult.No Then
PayType = DueDate.BegOfPeriod
Else
PayType = DueDate.EndOfPeriod
End If
APR = (Rate(TotPmts, -Payment, PVal, FVal, PayType, Guess) * 12) * 100
MsgBox("Your interest rate is " & Format(CInt(APR), Fmt) & " percent.")
End Sub
Требования
Пространство имен:Microsoft.VisualBasic
**Модуль:**Financial
**Сборка:**Visual Basic (библиотека времени выполнения, в Microsoft.VisualBasic.dll)