2

現在価値 は、将来の支払いまたは一連の将来の支払いの特定の日付の値であり、お金の時間価値や投資リスクなどの他の要因を反映するために割り引かれます。そして、はい、私はそれが公式であることを知っているので、それを必要としないでください。

しかし、このメソッドが.NETライブラリ内ですでに事前定義されているかどうか疑問に思っています。見つかりません。(.NETにはこの関数が含まれていないと思うので、代わりに独自の関数を使用する必要があります。)

私はC#で書かれた素晴らしいサードパーティのコンポーネントやサンプルを使いません。標準の.NETライブラリを許可するサードパーティのスクリプトソリューションを使用する必要があります。サードパーティのライブラリへのカスタム参照を追加したり、独自のアドオンモジュールを作成したりすることもできますが、これを回避しようとしています。

4

4 に答える 4

4

つまり、タイプでMicrosoft.VisualBasic.Financial, Microsoft.VisualBasic.dllは、静的PV関数が現在価値を計算します。

また、F#で実装されたExcelFinancialFunctionsも注目に値します。このAPIには、F#デザインまたはランタイムコンポーネントなしで使用するオプションがあります。

于 2009-07-15T12:01:26.040 に答える
4

ライブラリを使用することもできますMicrosoft.VisualBasicが、これは私にはあまりエレガントな解決策ではないようです。とにかく将来廃止されても驚かないでしょう。

単純な拡張は素晴らしい解決策です:

public decimal PresentValue(this decimal value, decimal interestRate, 
    decimal years)
{
    return value / Math.Pow(1 + interestRate, years);
}

もちろん、これは複利の単純な定義に基づいています。同様に計算できる現在価値には変動があります。

decimal10進数の精度を維持するために、このタイプを使用していることに注意してください。また、を使用して小数の時間の長さを許可しMath.Powます。

于 2009-07-15T12:11:56.877 に答える
3

Visual Basicライブラリには、Financialクラスが含まれています。 Financial.PV()があなたに代わってトリックを行うはずです。

Visual Basicを使用していない場合でも、プロジェクトからそのライブラリを他の言語で参照し、財務関数を使用できます。

ライブラリを直接使用することはできないというコメントによると、Financial.Pv関数内のビジュアルベーシックソースコードは次のようになります...

Public Shared Function PV(ByVal Rate As Double, ByVal NPer As Double, ByVal Pmt As Double, ByVal Optional FV As Double = 0, ByVal Optional Due As DueDate = 0) As Double
    Dim num As Double
    If (Rate = 0) Then
        Return (-FV - (Pmt * NPer))
    End If
    If (Due <> DueDate.EndOfPeriod) Then
        num = (1 + Rate)
    Else
        num = 1
    End If
    Dim x As Double = (1 + Rate)
    Dim num2 As Double = Math.Pow(x, NPer)
    Return (-(FV + ((Pmt * num) * ((num2 - 1) / Rate))) / num2)
End Function
于 2009-07-15T11:59:48.137 に答える
2

注意してください。継続的に複利計算することを区別する必要があります。

Pv = exp(-rt).Fv

離散的に複利計算します。

Pv = Fv.[(1 + r)^(-n)] 

(上記は年払いです)

これらは異なる答えを与えるでしょう、そしてあなたはどれを使うべきかを知る必要があります。

于 2009-07-15T12:11:37.113 に答える