Financial.IRR(Double[], Double) 方法

定义

返回一个值,该值指定一系列定期现金流(支出和收入)的内部收益率。

public static double IRR (ref double[] ValueArray, double Guess = 0.1);
static member IRR : Double[] * double -> double
Public Function IRR (ByRef ValueArray As Double(), Optional Guess As Double = 0.1) As Double

参数

ValueArray
Double[]

必需。 指定现金流值的 Double 数组。 该数组必须至少包含一个负值(支出)和一个正值(收入)。

Guess
Double

可选。 指定 IRR 将返回的估算值的对象。 如果省略,Guess 便为 0.1 (10%)。

返回

Double

一系列定期现金流(支出和收入)的内部收益率。

例外

数组参数值无效或 Guess <= -1。

示例

在此示例中,该 IRR 函数返回数组 Values()中包含的一系列五种现金流的内部回报率。 第一个数组元素是一个负现金流,表示业务启动成本。 其余四个现金流代表随后四年的正现金流。 Guess 是估计的内部返回率。

' Define money format.
Dim MoneyFmt As String = "###,##0.00"
' Define percentage format.
Dim PercentFmt As String = "#0.00"

Dim values(4) As Double
' Business start-up costs.
values(0) = -70000
' Positive cash flows reflecting income for four successive years.
values(1) = 22000
values(2) = 25000
values(3) = 28000
values(4) = 31000

' Use the IRR function to calculate the rate of return.
' Guess starts at 10 percent.
Dim Guess As Double = 0.1
' Calculate internal rate.
Dim CalcRetRate As Double = IRR(values, Guess) * 100
' Display internal return rate.
MsgBox("The internal rate of return for these cash flows is " & 
    Format(CalcRetRate, CStr(PercentFmt)) & " percent.")

注解

内部回报率是投资收到的利率,包括定期发生的付款和收据。

IRR 函数使用数组中的值顺序来解释付款和收据的顺序。 请务必按正确的顺序输入付款和收据值。 每个周期的现金流不需要固定,因为它用于年金。

IRR 由迭代计算。 从值 Guess开始, IRR 将循环计算,直到结果准确到 0.00001% 以内。 如果在 IRR 20 次尝试后找不到结果,则失败。

适用于

另请参阅