Retour de fonction bizarre
Bonjour,
Voilà mon problème. Je vous explique le contexte, pour que vous compreniez à peu près ce que fait mon code, mais mon problème est purement "informatique" (ce ne sont pas les calculs qui posent problème).
J'ai défini un type "obligation" :
Code:
1 2 3 4 5
| Public Structure Obligation
Dim Maturity As Double
Dim Coupon As Double
Dim Price As Double
End Structure |
puis une fonction "prixObligation(obligation, taux)" permettant de calculer le prix de l'obligation en fonction d'un taux de rendement.
Vient maintenant mon problème. J'ai créé cette fonction récursive :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| Function tauxActuarielMethodeFaussePosition(ByVal obli As Obligation, ByVal tauxA As Double, ByVal tauxB As Double) As Double
Dim epsilon As Double = 10 ^ (-4)
Dim valeurA As Double = prixObligation(obli, tauxA) - obli.Price
Dim valeurB As Double = prixObligation(obli, tauxB) - obli.Price
Dim tauxC As Double = tauxA - valeurA * (tauxB - tauxA) / (valeurB - valeurA)
If (Math.Abs(tauxB - tauxA) > epsilon) Then
Dim valeurC As Double = prixObligation(obli, tauxC) - obli.Price
If ((valeurA * valeurC) < 0) Then
tauxActuarielMethodeFaussePosition(obli, tauxA, tauxC)
Else
tauxActuarielMethodeFaussePosition(obli, tauxC, tauxB)
End If
Else
DataRead.Text = tauxC.ToString()
Return tauxC
End If
End Function |
J'appelle cette fonction dans une autre procédure ainsi :
Code:
1 2 3
|
Dim aux As Double = tauxActuarielMethodeFaussePosition(obli, 0, 100)
DataRead2.Text = aux.ToString() |
Le résultat obtenu sur mon label "DataRead" est "1.89" (ce qui exactement ce que j'attends). Mais le label "DataRead2" m'affiche "0" !! :aie:
Pourquoi donc ?
J'ai passé plusieurs heures à tout décortiquer pour savoir d'où ça vient, et je ne trouve toujours pas ! Pouvez-vous m'aider ?