Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Bug de calcul / arrondi ?

5 réponses
Avatar
Eric SURIN
Bonjour,

Je viens de me rendre compte que VBA retournait 0,899999976158142 comme
résultat de 9 / 10 !!!

Il en est de même pour d'autres fractions.

Même si j'ai trouvé un contournement (je force un arrondi à la 5e décimale),
je trouve que c'est un problème grave car cela fausse les calculs qui se
basent sur ces valeurs erronées.

D'autres ont-ils eu ce problème ?
Microsoft est-il au courant de ce bug ?

Merci pour vos commentaires.

Eric

5 réponses

Avatar
padbra
Salut Eric,
Je ne constate pas ceci sur mon poste WinXP pro SP1/Excel 2002

padbra

"Eric SURIN" a écrit dans le message de
news: BBE8DA64.C19D%
Bonjour,

Je viens de me rendre compte que VBA retournait 0,899999976158142 comme
résultat de 9 / 10 !!!

Il en est de même pour d'autres fractions.

Même si j'ai trouvé un contournement (je force un arrondi à la 5e
décimale),

je trouve que c'est un problème grave car cela fausse les calculs qui se
basent sur ces valeurs erronées.

D'autres ont-ils eu ce problème ?
Microsoft est-il au courant de ce bug ?

Merci pour vos commentaires.

Eric



Avatar
Eric SURIN
J'avais oublié de préciser que c'est un problème propre à Excel sous Mac
(quelle que soit la version d'Excel et de l'OS : 98, 2001 pour OS9 et Excel
X pour OS X)


Eric



dans l'article , padbra à
a écrit le 25/11/03 10:31 :

Salut Eric,
Je ne constate pas ceci sur mon poste WinXP pro SP1/Excel 2002

padbra

"Eric SURIN" a écrit dans le message de
news: BBE8DA64.C19D%
Bonjour,

Je viens de me rendre compte que VBA retournait 0,899999976158142 comme
résultat de 9 / 10 !!!

Il en est de même pour d'autres fractions.

Même si j'ai trouvé un contournement (je force un arrondi à la 5e
décimale),

je trouve que c'est un problème grave car cela fausse les calculs qui se
basent sur ces valeurs erronées.

D'autres ont-ils eu ce problème ?
Microsoft est-il au courant de ce bug ?

Merci pour vos commentaires.

Eric







Avatar
Michel Gaboly
Bonjour,

Sûrement pas !

C'est un problème classique lié aux conversions : les ordinateurs calculent
en binaire, ce qui implique une conversion pour exprimer des nombres en
base 10 avec des décimales.

Ces conversions entraînent des écarts, impercptibles le plus souvent

Voici un extrait d'une réponse que j'ai faite récemment (ficelle "Comparaison
dans VBA de variables "Double" du 12 novembre, initiée par quelqu'un qui a
rencontré le même problème que toi, avec XL 2002, sous XP :

Bonjour,

Tout cela est très simple en fait, contrairement aux apparences ;-)))

Les ordinateurs utilisent le système binaire et non le système décimal.
Cela conduit à de très légères approximations lors de la conversion de
nombres non entiers.

Avec des variables déclarées comme Double, le niveau de précision est tel
que ces approximations génèrent un écart (infime, mais non nul) lors
de l'addition. Il n'y a donc pas d'égalité, ce qu'on peut vérifier avec :

Sub CompareDouble()
Dim i As Double, j As Double, k As Double
i = 130.88
j = 120.2
k = 251.08
MsgBox k - (i + j)
End Sub

MsgBox affiche un écart de 2,8421709430404E-14, soit 2,84 que
multiplie 10 puissance -14. Par conséquent le test d'égalité échoue.

En déclarant les variables en Single, c'est-à-dire avec une précision
moindre (4 octets au lieu de 8), l'écart n'est plus perceptible.



Ce qu'il y a d'étonnant c'est qu'en déclarant les
variables en "single" comme le dis Pierre Dumas ça
fonctionne mais pas en "Double".
J'ai effectivement le même problème en utilisant les
ranges.
Etrange. Pour ma part, ça me dépasse...

Philippe



"Philippe Bretelle" a écrit dans le
message de news:1fd201c3a903$58f98750 $
Bonjour à tous,

Je suis nouveau sur le forum.
je suis sous windows 2000 pro et excel 2002
Normalement, les variables somme et but sont égales mais
la boite de dialogue ne s'affiche pas.
Mon code est le suivant:

Dim somme As Double
somme = Cells(1, 1).Value + Cells(2, 1).Value
' En A1 il y a 130,88 et en A2 120.2
Dim but As Double
but = Worksheets(1).Cells(1, 6).Value
'en F1, il y a 251,08
If somme = but Then
MsgBox ("égal")
End If

Merci par avance.
PS: J'ai quelques notions de VBA mais je reste débutant.
Ma question est peut-être très bête... et je m'en excuse
si c'est le cas mais là, je ne vois pas ce qui cloche!!!








J'avais oublié de préciser que c'est un problème propre à Excel sous Mac
(quelle que soit la version d'Excel et de l'OS : 98, 2001 pour OS9 et Excel
X pour OS X)

Eric

dans l'article , padbra à
a écrit le 25/11/03 10:31 :

Salut Eric,
Je ne constate pas ceci sur mon poste WinXP pro SP1/Excel 2002

padbra

"Eric SURIN" a écrit dans le message de
news: BBE8DA64.C19D%
Bonjour,

Je viens de me rendre compte que VBA retournait 0,899999976158142 comme
résultat de 9 / 10 !!!

Il en est de même pour d'autres fractions.

Même si j'ai trouvé un contournement (je force un arrondi à la 5e
décimale),

je trouve que c'est un problème grave car cela fausse les calculs qui se
basent sur ces valeurs erronées.

D'autres ont-ils eu ce problème ?
Microsoft est-il au courant de ce bug ?

Merci pour vos commentaires.

Eric







--
Cordialement,

Michel Gaboly
http://www.gaboly.com




Avatar
Gugus
Salut,
Tu penses que c'est le fait d'être en Mac qui produit cette erreur? J'ai
comme un doute. Qui peut confirmer?
A+

"Eric SURIN" a écrit dans le message de
news:BBE8E750.C1BA%
J'avais oublié de préciser que c'est un problème propre à Excel sous Mac
(quelle que soit la version d'Excel et de l'OS : 98, 2001 pour OS9 et
Excel

X pour OS X)


Eric



dans l'article , padbra à
a écrit le 25/11/03 10:31 :

Salut Eric,
Je ne constate pas ceci sur mon poste WinXP pro SP1/Excel 2002

padbra

"Eric SURIN" a écrit dans le message
de


news: BBE8DA64.C19D%
Bonjour,

Je viens de me rendre compte que VBA retournait 0,899999976158142 comme
résultat de 9 / 10 !!!

Il en est de même pour d'autres fractions.

Même si j'ai trouvé un contournement (je force un arrondi à la 5e
décimale),

je trouve que c'est un problème grave car cela fausse les calculs qui
se



basent sur ces valeurs erronées.

D'autres ont-ils eu ce problème ?
Microsoft est-il au courant de ce bug ?

Merci pour vos commentaires.

Eric










Avatar
AV
D'autres ont-ils eu ce problème ?


Rien à signaler avec XL5 à XL2000 sous Win
msgbox 9/10 -->0.9

AV