Surnaturel => conversion de nombres Access/VBA, incompréhensible !!!

Surnaturel => conversion de nombres Access/VBA, incompréhensible !!! - VB/VBA/VBS - Programmation

Marsh Posté le 03-07-2003 à 17:42:36    

Salut, je possède un enregistrement dans ma table qui est de type Double et qui vaut : 12.96775
 
Quand je fais un  
 

Code :
  1. MsgBox CCur(DLookup("value", "myTable", "ID=1" ))


 
Access m'affice 12.9677
 
Par contre, quand je fais  
 

Code :
  1. Dim value as Double
  2. value = 12.96775
  3. MsgBox (CCur(value))


 
La, Access m'affice 12.9678 (ce qui est la valueyr correcte d'ailleurs selon moi si on arrondit !
 
Bref, y a dequoi devenir fou !
 
Ah oui, la meilleure : si jexécute un requete en sélectionnat CCur([value]) comme champ, là, access m'affichera 12.9678, mais par contre, si j'update mon champ (requetre Update) avec Ccur([value]), alors là, Access va m'updater mon champ avec 12.9677
 
Y a t il une logique derrière tout ca?


Message édité par Yoyo@ le 03-07-2003 à 19:02:01
Reply

Marsh Posté le 03-07-2003 à 17:42:36   

Reply

Marsh Posté le 03-07-2003 à 19:00:57    

Alors, là, ca devient surnaturel !
 
Regadez bien cette image !
 
http://martin.lionel.free.fr/CasseTete.JPG
 
C'est le résultat de deux queries qui vont piocher dans deux tables différentes, mais contenat exactement la meme strucutre, à savoir un seul enregistrement, de type Double et contenant la valeur 12.96775.
Ces deux queries sélectionnet le premier champ en premiere colonne, et le CCur de ce meme champ en 2eme colonne...
 
Regardez, alors que la valeur de la 1ere colonne est la meme (ce qui prouve que les tables contiennet les memes valeurs), la valeur de la seconde colonne est différente !
 
Pourinfo, j'ai crée l'une des tables à la main, celle qui correspond à la table du haut, et l'autre, je l'ai généré à l'aide d'une requete Création de table a partir d'une autre grosse table, mais je ne crois pas que ca change quoi que ce soit...
 
Bref, y a de quoi se taper la tete contre les murs lol !!!
 
Vous en pensez quoi? Y des données cachées ou quoi?


Message édité par Yoyo@ le 03-07-2003 à 19:01:14
Reply

Marsh Posté le 03-07-2003 à 21:18:49    

Bon je continue mes investigations, et voila ce que je trouve (mais je m'en douais un petit peu quand meme :
 
J'exécute le code :  
 

Code :
  1. MsgBox (12.96775 - DLookup("Discount", "tabInventory" ))


 
1,24344978758018E-14
 
Ce qui prouve en fait que la valeur qu'il y a dans l'enregistrement de ma table tabInventory est légerement (mais alors vraiment légèrement) inférieur à 12.96775
 
C'est vraiment vicieux comme truc ! Et ca mefait peur, car au déut, je voulais arrondir à quatre choffre apres la virgule en utilisant Fix(10000*(0.00005+[discount]))/10000 et bien entendu, ca ne donnait pas la meme valeur qu'avec un Ccur parce que Access va "arrondir" la valeur de [discount] lorsque je lui demande d'aditionner 0.00005 !
 
Bref, vraiment un truc de taré, et c'est le genre de ptit mécanism qui peut "foutre son bordel" de partout !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed