VB6 Problème avec Variable Double... je crois

Résolu
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 - 15 mars 2006 à 18:40
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 15 mars 2006 à 21:55
Salut...

J'ai un petit problème avec mes résultats....

Je me suis fais un petit programme de conversion (ex. convertir X mètre qui me donne Y Pied)

Je rentre une donnée dans un textbox (ex 122,22) je sélectionne dans mon listbox Mètre pour dire que 122,22 est en mètre et j'appuis sur Enter qui fais apparaitre dans différent textbox la valeur en pied anglais, en pied francais, en Chaîne, en arpent, en Perche etc...

Pour une raison que j'ignore les résultat me donne dans certain texbox que 2 chiffres après la virgule et d'autre textbox j'ai une multitute de chiffre après la virgule. J'ai besoin d'avoir plus de 2 chiffre après la virgule... et je ne sais pas pourquoi il fait ca on dirait qu'il utilise la fonction Round mais je ne l'ai pas codé...

Si quelqu'un peut m'aider

Voici le code pour convertir des mètres en Pied Anglais

ElseIf cboLongueur.Text = "Pied Anglais" Then
VarMetre = CDbl(Val(txtConversion.Text * 30.48)) / 100
VarPiedFrancais = CDbl(Val(txtConversion * 0.9383064))
VarChaine = CDbl(Val(txtConversion * 1.515151)) / 100
VarArpent = CDbl(Val((txtConversion.Text * 30.48) / 100)) / 58.471308
VarPerche = CDbl(Val((txtConversion.Text * 30.48) / 100)) / 5.8471308
VarVerge = CDbl(Val((txtConversion.Text * 30.48) / 100)) / 0.9144

txtPiedAnglais.BackColor = &HE0E0E0
txtPiedAnglais.Text = ""

txtMetre.Text = VarMetre
txtPiedFrancais.Text = VarPiedFrancais
txtChaine.Text = VarChaine
txtArpent.Text = VarArpent
txtPerche.Text = VarPerche
txtVerge.Text = VarVerge

Merci d'avance

4 réponses

cs_jperre Messages postés 268 Date d'inscription lundi 9 janvier 2006 Statut Membre Dernière intervention 19 janvier 2017 2
15 mars 2006 à 20:29
Si c'est un problème de virgule flottante, il est possible d'utiliser le type Currency qui, lui est à virgule fixe.
A tester...
3
cs_jperre Messages postés 268 Date d'inscription lundi 9 janvier 2006 Statut Membre Dernière intervention 19 janvier 2017 2
15 mars 2006 à 19:09
Pourquoi ne pas utiliser la fonction Format pour afficher les résultats
Exemple TextBoxAffichage.Text=Format(VarMetre,"#0.00000") pour afficher les résultats avec 5 chiffres après la virgule. Si les décimales de droite sont à zéro, elles s'afficheront tout de même à cette valeur.

Je ne sais pas si celà répond à ton problème!...
0
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 4
15 mars 2006 à 20:19
Salut merci pour ta réponse mais cela ne règle pas le problème....

Si par exemple je veux convertir 122,22 mètre en pied
Je fais 122,22 * 0,3048 = 37,252656

Mon programme tronque des chiffres après la virgule donc il fais le calcul mais la réponse est égale 37,25

Ainsi si je fais un Format ca me donne comme réponse 37,2500

:(

Si tu as un autre idée... merci d'avance
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
15 mars 2006 à 21:55
négatif c'est le Val() qui tronque



exemple:

Val("122,22") --> 122

Val("122,22" * 0.3048) --> 37

Val("122,22" * 30.48) --> 3725

Val("122,22") * 30.48 --> 3718.56



solutions:
- si tu garde le Val() il faut un point à la place de la virgule

il vaut mieux aussi avoir un point en sortie

txtConversion = "122.22"

VarMetre = Val(txtConversion.Text) * 30.48 / 100

txtMetre.Text = Str$(VarMetre)



- si tu garde la virgule, il faut pas utiliser Val()

txtConversion = 122.22


VarMetre = txtConversion.Text * 30.48 / 100


txtMetre.Text = VarMetre




Daniel
0
Rejoignez-nous