OVH Cloud OVH Cloud

Problème d'arrondis

3 réponses
Avatar
AJADV
J'ai réalisé les deux essais suivants, qui dans chaque cas doivent donner
rigoureusement zéro. Or dans le premier ce n'est pas le cas. Qui aurait une
explication, sans utiliser Round (pas nécessaire dans ce cas)
Dim X As Single
Dim Y As Single
Dim Z As Single

X = 4205.47
Y = 1761.83
Z = 2443.64
Me!Resultat = X - Y - Z donne 0,0003662109

X = 54952.55
Y = 17490.7
Z = 37461.85
Me!Resultat = X - Y - Z donne 0,00

AJ

3 réponses

Avatar
3stone
Salut,

"AJADV"
| J'ai réalisé les deux essais suivants, qui dans chaque cas doivent donner
| rigoureusement zéro. Or dans le premier ce n'est pas le cas. Qui aurait une
| explication, sans utiliser Round (pas nécessaire dans ce cas)
| Dim X As Single
| Dim Y As Single
| Dim Z As Single
|
| X = 4205.47
| Y = 1761.83
| Z = 2443.64
| Me!Resultat = X - Y - Z donne 0,0003662109
|
| X = 54952.55
| Y = 17490.7
| Z = 37461.85
| Me!Resultat = X - Y - Z donne 0,00


Normal, quelle précision souhaite-tu avec des integer ?

Si tu veux éviter les erreurs d'approximation, utilise des "Currency"


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
AJADV
Merci pour la réponse, mais elle ne correspond pas à mon cas puisque
j'utilise des variables définies en Single et non Integer. D'autre part la
réponse ne me dit pas pourquoi Access réagit différemment dans chacun de mes
exemples. Je ne veux pas non plus utiliser le Currency qui va m'imposer un
symbole.
Encore merci à qui pourra m'apporter des précisions supplémentaires.
AJADV



Salut,

"AJADV"
| J'ai réalisé les deux essais suivants, qui dans chaque cas doivent donner
| rigoureusement zéro. Or dans le premier ce n'est pas le cas. Qui aurait une
| explication, sans utiliser Round (pas nécessaire dans ce cas)
| Dim X As Single
| Dim Y As Single
| Dim Z As Single
|
| X = 4205.47
| Y = 1761.83
| Z = 2443.64
| Me!Resultat = X - Y - Z donne 0,0003662109
|
| X = 54952.55
| Y = 17490.7
| Z = 37461.85
| Me!Resultat = X - Y - Z donne 0,00


Normal, quelle précision souhaite-tu avec des integer ?

Si tu veux éviter les erreurs d'approximation, utilise des "Currency"


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw





Avatar
3stone
Salut,

"AJADV"
| Merci pour la réponse, mais elle ne correspond pas à mon cas puisque
| j'utilise des variables définies en Single et non Integer.


Un integer ne sait représenter qu'un entier !
Et toutes les fractions ne le sont pas non plus même avec un double...


D'autre part la
| réponse ne me dit pas pourquoi Access réagit différemment dans chacun de mes
| exemples. Je ne veux pas non plus utiliser le Currency qui va m'imposer un
| symbole.


Voir ci-dessus !

Tu peut toujours utiliser le "format" d'affichage avec 2 décimales
Access s'occupera de l'arrondi...

et le currency n'impose pas de symbole.


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw