Accueil > Forum > > > > Problème de multiplication décimal
Problème de multiplication décimal
samedi 21 octobre 2006 à 17:48:36 |
Problème de multiplication décimal

Compufly
|
Bonjour, est-ce que quelqu'un peut m'expliquer pourquoi j'ai ce problème : PRINT 4 * 0.2 0,8 PRINT "4" * "0,2" 0,8 print rst2.Fields(foo) * rst1.Fields(foo) 0,800000011920929 Lorsque : rst2.=Fields(foo) = 4 et rst1.Fields(foo) = 0,2 Je ne comprends pas pourquoi VB6 traite ces multiplications différemment. Merci d'avance, Compufly
|
|
samedi 21 octobre 2006 à 17:51:39 |
Re : Problème de multiplication décimal

DARKSIDIOUS
|
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")
|
|
samedi 21 octobre 2006 à 18:01:18 |
Re : Problème de multiplication décimal

Compufly
|
rst2.=format(Fields(foo) = 4 et rst1.Fields(foo) = 0,2, "0.00")
Humph, je ne crois pas que de cette façon...
En fait, rst2.Fields contient le résultat de SELECT * FROM [JOUEURS] WHERE POSITION = 'G';
et rst1.Fields contient le résultat de SELECT * FROM [POINTAGE]
Donc mon problème est que VB6 reçoit dans : rst2.Fields(foo) la valeur 4 et rst1.Fields(foo) la valeur 0,2
Mais quand je fais : pointage = pointage + rst2.Fields(foo) * rst1.Fields(foo) J'obtient le nombre 0,800000011920929
Donc le format, de quelle façon puis-je l'employer dans cet exemple si ça se tient toujours?
Compufly
|
|
samedi 21 octobre 2006 à 18:41:57 |
Re : Problème de multiplication décimal

DARKSIDIOUS
|
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 : pointage = pointage + format(rst2.Fields(foo) * rst1.Fields(foo), "0.00")
|
|
samedi 21 octobre 2006 à 21:16:08 |
Re : Problème de multiplication décimal

Compufly
|
ppj = ppj + Format(Format(rst2.Fields(foo), "0.0") * Format(rst1.Fields(foo), "0.0"), "0.0")
Me donne quand même des résultats du genre : 0,9000001
Je crois que je n'aurai pas le choix d'utiliser la fonction ROUND(rst1.Fields(foo), 1) etc.
Compufly
|
|
samedi 21 octobre 2006 à 21:18:51 |
Re : Problème de multiplication décimal

Compufly
|
ppj = ppj + Round(rst2.Fields(foo), 1) * Round(rst1.Fields(foo), 1)
Même cette commande me donne le même résultat. On dirait que VB6 fait des troubles quand vient le temps de calculer des ","
Compufly
|
|
samedi 21 octobre 2006 à 21:49:48 |
Re : Problème de multiplication décimal

DARKSIDIOUS
|
Réponse acceptée !
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).
|
|
Cette discussion est classée dans : problème, fields, multiplication, décimal, foo
Répondre à ce message
Sujets en rapport avec ce message
désespéré - Problème de décimal - VB6 - Access [ par Zepp ]
Bonjour,ça fait quelques temps que je suis bloqué au même endroit dans mon programme. Ce problème semble très ridicule et j'imagine qu'il doit être s
problème étrange - VB6 - Access - Décimal [ par Zepp ]
Bonjour,ça fait quelques temps que je suis bloqué au même endroit dans mon programme. Ce problème semble très ridicule et j'imagine qu'il doit être si
Problème avec Null [ par Globig ]
Bonjour.Je rencontre un problème avec l'écriture suivanteIf rs.fields(0).value is Null Then variable = 0Else variable = rs.fields(0).value * 0.01End I
Problème d'enregistrement ADO et Sql Server [ par djean ]
BonjourJ'ai des problèmes d'enregistrement avec mon appli.Base Sql Server et plusieurs utilisateurs.Pour enregistrer, j'appelle une procédure stockée
séparateur décimal entre vba et access [ par seblh ]
Bonjour, j'ai un petit problème entre access et vba.En vba, j'éxécute une requête de mise à jour ou alors d'insertion d'enregistrement. Le problème c'
too many fields [ par VbAbdoul ]
Bonjour,J'ai cré une appli vb qui permet de créer et d'excuter une requete dans une base Access et d'envoyer le resultat sur une feuille Excel. Mon pr
problème d'espace : comment les supprimer? [ par allowen ]
bonjour à tous,je veux récupère des données d'une base access et crée une macro avec vba dans excel afin de mettre ces données sur une feuille excel.L
Problème avec un combobox [ par BosB ]
Bonjour,je viens de passer mon appli de VB6 à VB.net, et j'ai un pb avec un combobox:CboFournisseur.AddItem(RsFourn.Fields("Nom_Fournisseur")) : ce c
ajout d'un enregistrement dans table Access [ par nono50 ]
J'ai un problème avec la fonction AddNew. Au débogage, le programme s'arrète toujours dessus. Est ce que quelqu'un voit le problème là dedans:'Fonctio
problème décimal [ par patchap40 ]
bonjour à tous, je suis novice en vba6 (et oui encore 1), j'aimerais savoir pourquoi une valeur que j'ai entré qui devrait être décimale, s'affiche en
Livres en rapport
|
Derniers Blogs
PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc [HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Très bonne après-midi passée lors cette conférence avec le W3C, organisée par L' Inria sur les nouveaux standards, ce Mardi 14 Février, on sent vraiment que çà bosse au W3C, et l'avenir est très très prometteur pour le HTML5, notamment ...
Cliquez pour lire la suite de l'article par Gio GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|