Problème de variable VBA

Résolu
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

2 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
Round(TBht.Value * Tva ,2)
1
Patgnr
 
Bonjour michel_m

Je te remercie pour ta réponse rapide, je vais essayer ta solution.

Cordialement

Patgnr
0