OVH Cloud OVH Cloud

Résultats de calcul fantaisites sous Access 97

3 réponses
Avatar
Pierre CHAPON
Bonjour

Sous access 97
j'ai une table 1 dont la structure est la suivante :
Nbr1 : numérique réel simple
Nbr2 : numérique réel simple

Le Nbr1= 1 576.55
Le Nbr2 = 0

Dans un requête j'effectue l'opération Nbr3 : [Nbr1]-[Nbr2]
J'obtiens 1576.55004882813

Le Nbr1= 2 185.44
Le Nbr2 = 1
Avec la même requête Nbr3 : [Nbr1]-[Nbr2]
J'obtiens 2184.43994140625

Access aurait-il quelques problèmes dans les calculs ?

Merci pour vos éclaircissements.

3 réponses

Avatar
Daniel Carollo
Bonjour Pierre!

Les resultats ne sont pas fantaisistes du tout, ce sont tout simplement des
erreurs d'arrondi. Comme chacun le sait, les nombres sont stockes en binaire
(0 ou 1) et tout se ramene a cela. Il n'y a pas de probleme avec les
entiers, sous reserve de se limiter a la capacite de stockage, par contre,
il y a des problemes d'arrondis avec de nombres decimaux: s'il est facile de
representer 0.5 (c'est tout simplement 2 a la puissance -1), 0.1 ne
represente pas une puissance de 2 entiere, d'ou le probleme d'arrondi. On
contrecarre ce probleme en augmentant la precision, ou en travaillant sur
des entiers (en multipliant les operandes par 100, dans votre cas par
exemple ).

J'espere que ca vous donne quelques idees.

--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"Pierre CHAPON" wrote in message
news:
Bonjour

Sous access 97
j'ai une table 1 dont la structure est la suivante :
Nbr1 : numérique réel simple
Nbr2 : numérique réel simple

Le Nbr1= 1 576.55
Le Nbr2 = 0

Dans un requête j'effectue l'opération Nbr3 : [Nbr1]-[Nbr2]
J'obtiens 1576.55004882813

Le Nbr1= 2 185.44
Le Nbr2 = 1
Avec la même requête Nbr3 : [Nbr1]-[Nbr2]
J'obtiens 2184.43994140625

Access aurait-il quelques problèmes dans les calculs ?

Merci pour vos éclaircissements.





Avatar
J-Pierre
Bonjour,

essaie
Nbr3 = round([Nbr1]-[Nbr2],2)

je crois que round n'est disponible qu'à partir d'access 2000, si tu es en 97, fais une recherche sur Google, tu trouveras du code
qui fait ça
http://groups.google.com/groups?oi=djq&as_ugroup=microsoft.public.fr.access

J-Pierre
Avatar
Gafish
Bonjour,

Il y a cette fonction qui marche très bien :
http://www.mvps.org/accessfr/modules/mdl0054.htm

Arnaud

"J-Pierre" a écrit dans le message de news:
#
Bonjour,

essaie
Nbr3 = round([Nbr1]-[Nbr2],2)

je crois que round n'est disponible qu'à partir d'access 2000, si tu es en
97, fais une recherche sur Google, tu trouveras du code

qui fait ça

http://groups.google.com/groups?oi=djq&as_ugroup=microsoft.public.fr.access


J-Pierre