cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 21 oct. 2006 à 21:49
Cela ne vient pas "vraiment" de vb6, mais du système de codage des nombres : il est impossible de coder tout les réels sur 32 bits, du coup, vb (comme la grande majorité des langages) doivent faire une approximation des nombres pour pouvoir les stocker. Malheureusement, cela n'est pas parfait, et donne des résultats surprenants pour certains nombres.
Alors soit tu utilise la fonction Format à la fin de ton calcul (et là ca devrait marcher), soit utilise des variables String pour stocker tes nombres (ce sera moins efficace, mais au moins ca stockera les bons chiffres avec la fonction Format).
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 21 oct. 2006 à 17:51
convertit les nombres obtenus (bien souvent, le système de codage des nombres est différent entre une base de données et vb6 => à tout les coup, ta base de données ne sait pas comment coder correctement 0.8 (problème du complèment à deux bien connu en prog))
Donc ca donne :
rst2.=format(Fields(foo) = 4 et rst1.Fields(foo) = 0,2, "0.00")
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 21 oct. 2006 à 18:41
ca ne change rien : la fonction format te permettra de préciser la précision de l'opération, donc ici, 2 chiffres après la virgule, ce qui évite ce problème de complément à 2, donc ca donne :