Erreur de convertion de double en tostring

Fermé
kouka34 Messages postés 34 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 11 décembre 2014 - 26 avril 2013 à 15:03
 Utilisateur anonyme - 2 mai 2013 à 05:21
Bonjour,


svp je suis débutante en vb.net je crée un mini projet pour le calcul d'un amortissement de crédit
et j'ai le code suivant:

j'ai créer une fonction pour le calcul d'un montant d'echeance
_________________________________________________________
Function calculMontant_ech(ByVal c As Double)

montant = Double.Parse(montcredit.Text)
amortissement = Double.Parse(boite_amorti.Text)
taux_inetr = Double.Parse(boite_taux.Text)
Dim int As Double
Dim mnt As Double
Dim t As Double


t = ((taux_inetr / 100) / 12) + 1
int = montant * ((taux_inetr / 100) / 12)
mnt = 1 - (t ^ -(amortissement))
MontEchéance = int / mnt
c = MontEchéance
Return c

End Function
________________________________
apres je veus que cette valeur s'affiche dans un textbox en form_load
comme suit:
BoîteTauxEffectif.Text = calculMontant_ech(montant).ToString()
et ca me donne une erreur au niveau de type de la variable montant
aidez moi svp!
A voir également:

6 réponses

Utilisateur anonyme
2 mai 2013 à 01:22
Bonjour,

Function calculMontant_ech(ByVal c As Double)

c = 0
Dim montant as double

' TryParse renvoie Faux si la conversion est impossible,
' sinon le conversion est dans la variable montant
If (Double.TryParse(montcredit.Text), montant) Then
Dim amortissement as Double
If (Double.TryParse(boite_amorti.Text), amortissement) Then
Dim taux_inetr as Double
If (Double.TryParse(boite_taux.Text), taux_inetr) then
Dim int As Double
Dim mnt As Double
Dim t As Double

t = ((taux_inetr / 100) / 12) + 1
int = montant * ((taux_inetr / 100) / 12)
mnt = 1 - (t ^ -(amortissement))
' Évite les accents dans le code
MontEcheance = int / mnt
c = MontEcheance
End If
End If
End If

Return c

End Function


K
1
Function calculMontant_ech(ByVal c As Double) As Double 

c = 0 
Dim montant As Double 

' TryParse renvoie Faux si la conversion est impossible, 
' sinon le conversion est dans la variable montant 
If (Double.TryParse(montcredit.Text), montant) Then 
  Dim amortissement As Double 
  If (Double.TryParse(boite_amorti.Text),  amortissement) Then 
    Dim taux_inetr As Double 
    If (Double.TryParse(boite_taux.Text), taux_inetr) Then 
      Dim int As Double 
      Dim mnt As Double 
      Dim t As Double 

      t = ((taux_inetr / 100) / 12) + 1 
      int = montant * ((taux_inetr / 100) / 12) 
      mnt = 1 - (t ^ -(amortissement)) 
      ' Évite les accents dans le code 
      MontEcheance = int / mnt 
      c = MontEcheance 
    End If 
  End If 
End If 

Return c 

End Function  


Ne connaissant pas les aboutissant :

1.) Pourquoi tu passe en paramètre une variable qui est affecte par la ligne :
c = MontEcheance et qui est retournée par la fonction
A-t-elle une valeur de départ ?

J'écrirais plutôt :

Function calculMontant_ech() As Double 

Dim c As Double = 0 
Dim montant As double 

' TryParse renvoie Faux si la conversion est impossible, 
' sinon le conversion est dans la variable montant 
If (Double.TryParse(montcredit.Text), montant) Then 
  Dim amortissement As Double 
  If (Double.TryParse(boite_amorti.Text),  amortissement) Then 
    Dim taux_inetr As Double 
    If (Double.TryParse(boite_taux.Text), taux_inetr) Then 
      Dim int As Double 
      Dim mnt As Double 
      Dim t As Double 

      t = ((taux_inetr / 100) / 12) + 1 
      int = montant * ((taux_inetr / 100) / 12) 
      mnt = 1 - (t ^ -(amortissement)) 
      ' Évite les accents dans le code 
      ' Méfie-toi des division par zéro 
      MontEcheance = 0 
      If (mnt > 0 ) Then 
 MontEcheance = int / mnt 
      End If 
      c = MontEcheance 
    End If 
  End If 
End If 

Return c 

End Function  


K
0
0kid0ki Messages postés 174 Date d'inscription mercredi 18 janvier 2012 Statut Membre Dernière intervention 6 mars 2014 8
26 avril 2013 à 15:51
Bonjour,

Essaye :
varIntermédiaire = calculMontant_ech(montant)
BoîteTauxEffectif.Text = varIntermédiaire.ToString()
                      ou varIntermédiaire & ""


petit tips, n'applique jamais de méthode sur le résultat d'une fonction
ex : f1().m1() INTERDIT PAR LA CONVENTION DE GENEVE !!!
(var.m1().m2() ou var.m1().arg = "kikoo" AUTORISEE)

Cordialement,
0kid0ki
0
kouka34 Messages postés 34 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 11 décembre 2014 2
26 avril 2013 à 16:04
merci bcp mais ca n'a pas marché il y'a encore l'erreur
en sachat que j declaré:
Private montant As Double


et dans la fonction:

j'ai fait
montant = Double.Parse(montcredit.Text)

j'ai fait ce que tu m'a dis mais il y'a encore l'erreur au niveau de
montant = Double.Parse(montcredit.Text)

erreur:Input string was not in a correct format.
0
0kid0ki Messages postés 174 Date d'inscription mercredi 18 janvier 2012 Statut Membre Dernière intervention 6 mars 2014 8
26 avril 2013 à 16:06
oulah je comprend plus tu essaie de transformer un string en double ou un double en string ??
0
0kid0ki Messages postés 174 Date d'inscription mercredi 18 janvier 2012 Statut Membre Dernière intervention 6 mars 2014 8
Modifié par 0kid0ki le 26/04/2013 à 16:09
Je viens de relire et j'ai compris ton dernier message, alors apparement c'est ton "montcredit.Text" qui nous embête, vérifie son format !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kouka34 Messages postés 34 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 11 décembre 2014 2
26 avril 2013 à 16:08
un double tostring
0
kouka34 Messages postés 34 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 11 décembre 2014 2
26 avril 2013 à 16:10
puisque la valeur que retourne la fonction est de type double et je vaux l'afficher dand la form_looad dans un textbox tu vois
0
0kid0ki Messages postés 174 Date d'inscription mercredi 18 janvier 2012 Statut Membre Dernière intervention 6 mars 2014 8
29 avril 2013 à 13:03
oui oui mais comme dis plus tôt revois le format de ton moncredit.text !!
il faut que ce soit que des chiffres et au max 1 point
0