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
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|