Problème de variable VBA
Résolu
Patgnr
-
Patgnr -
Patgnr -
Bonjour,
J'ai réalisé un petit rogramme pour calculer la valeur TTC ou HT.
Je rencontre un petit problème avec la déclaration d'une variable en Single et je n'en comprends pas la raison.
Le programme est le suivant:
Private Sub CBValider_Click()
Dim Tva As Double
Tva = 1.196
If TBttc.Text = "" Then
TBttc.Value = TBht.Value * Tva
Else
TBht.Value = TBttc.Value / Tva
End If
End Sub
Si la valeur de la textbox(Tbht.value) est 100 et que je le multiplie par la variable Tva (1.196), le résultat retourné est de 12 chiffres derrière la virgule soit 119,59999799..
Par contre si je déclare ma variable en Double le résultat est correct soit 119,6.
Je ne comprends pas cette approximation pour la déclaration en Single.
Si quelqu'un a une explication, je le remercie d'avance.
Pat
J'ai réalisé un petit rogramme pour calculer la valeur TTC ou HT.
Je rencontre un petit problème avec la déclaration d'une variable en Single et je n'en comprends pas la raison.
Le programme est le suivant:
Private Sub CBValider_Click()
Dim Tva As Double
Tva = 1.196
If TBttc.Text = "" Then
TBttc.Value = TBht.Value * Tva
Else
TBht.Value = TBttc.Value / Tva
End If
End Sub
Si la valeur de la textbox(Tbht.value) est 100 et que je le multiplie par la variable Tva (1.196), le résultat retourné est de 12 chiffres derrière la virgule soit 119,59999799..
Par contre si je déclare ma variable en Double le résultat est correct soit 119,6.
Je ne comprends pas cette approximation pour la déclaration en Single.
Si quelqu'un a une explication, je le remercie d'avance.
Pat
2 réponses
Bonjour,
Il y a effectivement beaucoup de problèmes avec le type single notamment avec la fonction "round"
au passage, tu devrais peut-^etre utiliser cette fonction pour ton calcul TTC
ht=14,29 ==> TTC=17,09064...
le piège étant d'utiliser une format à 2 décimales: l'arrondi de la somme n'est pas la somme des arrondis et tu risques d'avoir une erreur d'1 centime
Il y a effectivement beaucoup de problèmes avec le type single notamment avec la fonction "round"
au passage, tu devrais peut-^etre utiliser cette fonction pour ton calcul TTC
ht=14,29 ==> TTC=17,09064...
le piège étant d'utiliser une format à 2 décimales: l'arrondi de la somme n'est pas la somme des arrondis et tu risques d'avoir une erreur d'1 centime
Round(TBht.Value * Tva ,2)