2009-07-15 6 views
2

Present Value은 돈의 시간 가치 및 투자 위험과 같은 다른 요소를 반영하여 미래의 지급 또는 일련의 미래 지급에 대한 주어진 날짜의 가치입니다. 그리고 그렇습니다. 공식이 필요하다는 것을 알고 있습니다.현재 가치 계산

그러나이 방법이 이미 .NET 라이브러리 내에 미리 정의되어 있는지 궁금합니다. 나는 그것을 발견 할 수 없다. (그리고 .NET에는이 함수가 포함되어 있지 않으므로 대신 내 함수 만 사용해야 할 것입니다.)

C#으로 작성된 멋진 타사 구성 요소 나 샘플에는 사용할 수 없습니다. 표준 .NET 라이브러리를 허용하는 타사 스크립팅 솔루션을 사용해야합니다. 타사 라이브러리에 대한 사용자 지정 참조를 추가하고 내 추가 모듈을 작성할 수도 있지만이를 피하려고합니다.

답변

3

시각적 기본 라이브러리에는 Financial 클래스가 있습니다. Financial.PV()이 당신을 위해 속임수를 써야합니다.

Visual Basic을 사용하지 않는 경우에도 프로젝트에서 다른 언어로 프로젝트를 참조하고 재무 기능을 사용할 수 있습니다. 직접 라이브러리를 사용할 수 없습니다 귀하의 코멘트 당

는 Financial.Pv 기능 내부의 Visual Basic에서 소스 코드 ... 이런 식으로 뭔가를 보이는 유형 Microsoft.VisualBasic.Financial, Microsoft.VisualBasic.dll 정적을에서

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 
+0

Microsoft IDE가 아닙니다. 세미 그래픽 개발 시스템 인 "Composer"라는 타사 도구를 사용하고 있습니다. 기존 C# 프로젝트에 추가 할 수있는 .NET 어셈블리를 만듭니다. 비 기술적 인 사람들이 간단한 수식을 쓰는 것이 대부분입니다. 아쉽게도 VisualBasic 어셈블리를 지원하지 않습니다. –

+0

Visual Basic 어셈블리에서 반사기를 사용하여 수식을 가져 와서 프로젝트에서 직접 사용할 수 있습니다. –

+0

덕분에 많이 ... 당신의 기능은 정말 내 엉덩이를 구하십시오. 비록 플래시 AS3에서 사용하지만 플래시로 마이 그 레이션 할 수 있습니다. –

4

그것은이다, PV 함수는 현재 값을 계산합니다.

F #에서 구현 된 Excel Financial Functions도 주목할 가치가 있습니다. 이 API에는 F # 디자인 또는 런타임 구성 요소와 함께 사용할 수있는 옵션이 있습니다.

+0

+1은 Excel 재무 함수를 언급합니다. – Noldorin

2

주의하십시오. 예를 들어,

Pv = exp(-rt).Fv 

와 몰래 이들은 다른 대답을 줄 것이다 당신이 필요가 어느 사용할 알고 예컨대

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

(위의 연간 지불입니다)

합성.

+0

계산이 월별로 이루어집니다. 기간은 개월 수이고이자는 월간이자입니다. –

+0

두 번째 수식을 적절하게 적용 할 수 있습니다. 괜찮아. 오랫동안 필요한 것을 아는 한 (일부 사람들은 그렇지 않으며, 모두 눈물로 끝납니다 :-) –

4

Microsoft.VisualBasic 라이브러리를 사용할 수 있지만 이는 나에게 매우 우아한 해결책이 아닙니다. 어쨌든 미래에 비추천 적이라면 나는 놀라지 않을 것입니다.

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

이 복리의 간단한 정의를 기반으로 물론이다

간단한 확장은 좋은 해결책이 될 것입니다. 유사하게 계산할 수있는 현재 값의 변형이 있습니다.

기수 10의 정확도를 유지하기 위해 decimal 유형을 사용합니다. 또한 Math.Pow을 사용하여 부분 시간 길이를 허용합니다.