OVH Cloud OVH Cloud

Pb de conversion de données numériques

2 réponses
Avatar
Fab
Bonjour,

Je viens de me rendre compte d'un probl=E8me bien emb=EAtant=20
sous VB:=20
Voil=E0, j'ai une variable "A" d=E9clar=E9e en type Single que=20
j'initialise =E0 la valeur 8.15 (par exemple). Si je=20
l'enregistre dans un champ de type Double d'une base=20
Access, mon champ contient la valeur 8,14999961853027 !!!
Encore plus fort, le m=EAme r=E9sultat se produit si je fais=20
CDbl(A)...
Si quelqu'un a une solution =E0 ce probl=E8me, je suis=20
preneur. Evidement, il y a bien la solution de d=E9clarer ma=20
variable en Double au lieu de Single mais y'a t'il une=20
autre solution ?

Merci

2 réponses

Avatar
le_troll
Salut, ne pas utiliser les BDD mais les fichiers, lol... Tu voulais une
autre solution :o)
------------------------------------------
Merci, @+, bye, Joe

------------------------------------------
Avec une hache, celui qui tient le manche a toujours raison !

"Fab" a écrit dans le message de news:
0d5101c425fe$ee357c20$
Bonjour,

Je viens de me rendre compte d'un problème bien embêtant
sous VB:
Voilà, j'ai une variable "A" déclarée en type Single que
j'initialise à la valeur 8.15 (par exemple). Si je
l'enregistre dans un champ de type Double d'une base
Access, mon champ contient la valeur 8,14999961853027 !!!
Encore plus fort, le même résultat se produit si je fais
CDbl(A)...
Si quelqu'un a une solution à ce problème, je suis
preneur. Evidement, il y a bien la solution de déclarer ma
variable en Double au lieu de Single mais y'a t'il une
autre solution ?

Merci
Avatar
yan
bonjour,

nous avons été confronté exactement au même problème

quand on convertit un single en double, les bits qui ne sont pas "utilisés"
contienne "n'importe quoi", ce qui fait que ta valeur n'est pas toujours
correcte

la solution qu'on a utilisée, qui n'est sans doute pas la meilleure, donc si
y a mieux, je suis preneur également, est de d'abord convertir la valeur en
string, puis le convertir en double

ce qui donne cdbl(cstr(A))

attention, si tu fais une opération entre un single et un double, tu auras
le même soucis.



"le_troll" a écrit dans le message de
news:
Salut, ne pas utiliser les BDD mais les fichiers, lol... Tu voulais une
autre solution :o)
------------------------------------------
Merci, @+, bye, Joe

------------------------------------------
Avec une hache, celui qui tient le manche a toujours raison !

"Fab" a écrit dans le message de


news:
0d5101c425fe$ee357c20$
Bonjour,

Je viens de me rendre compte d'un problème bien embêtant
sous VB:
Voilà, j'ai une variable "A" déclarée en type Single que
j'initialise à la valeur 8.15 (par exemple). Si je
l'enregistre dans un champ de type Double d'une base
Access, mon champ contient la valeur 8,14999961853027 !!!
Encore plus fort, le même résultat se produit si je fais
CDbl(A)...
Si quelqu'un a une solution à ce problème, je suis
preneur. Evidement, il y a bien la solution de déclarer ma
variable en Double au lieu de Single mais y'a t'il une
autre solution ?

Merci