XL 2016 Erreur comparaison deux nombres décimale

Nouriddineo

XLDnaute Nouveau
Vous allez constater l'erreur sur excel facilement
Créer cell en A2 de la valeur de 3,2
Incrementer en bas 4,2 5,2 6,2 7,2 8,2 9,2....
En face de 3,2 cad B2 ecrit ceci
Si((A2-ENT(A2))=0,2;"vrai";"faux")
vous allez remarquer l'erreur entre 7,2 --> vrai et 8,2--> faux
C'est une erreur de microsoft....
 

TooFatBoy

XLDnaute Barbatruc
Bonjour à toi aussi !...
Bonjour tous les autres également, 😉

Si((A2-ENT(A2))=0,2;"vrai";"faux")
Sous la même forme, mais en plus court : (A2-ENT(A2))=0,2


ce chiffre vient d'une formule de calcul qui renvoie peut-être 3,2000001.
L'incrémentation dont il est question est peut-être du genre =A2+1 mais en l'état, difficile savoir..
 

natorp

XLDnaute Accro
Bjr tout le monde

Je constate bien la même anomalie, mais je sais pas pourquoi à partir du 15ème chiffre après la virgule, pour 8,2 et 9,2 cela donne 0,199999999999999

Cordialement, Gérard
 

Pièces jointes

  • Classeur1.xlsx
    12.5 KB · Affichages: 4

JHA

XLDnaute Barbatruc
Bonjour à tous,

La réponse a été donnée au post #8 par notre ami @ALS35 ;)
Mais la méthode arrondi donne le bon résultat, je me suis trompé dans la syntaxe au post #2, désolé.
VB:
=SI(ARRONDI(A2-ENT(A2);1)=0,2;"VRAI";"FAUX")

JHA
 

Pièces jointes

  • COMPARE.xlsx
    9.8 KB · Affichages: 3

Dranreb

XLDnaute Barbatruc
Bonjour.
À étudier.
En résumé la valeur pourtant la plus proche possible de 8,2 :
8,199999999999999289457264239899814128875732421875
- 8 = 0,199999999999999289457264239899814128875732421875
qui n'est plus la valeur la plus proche possible de 0,2, cette dernière étant
0,200000000000000011102230246251565404236316680908203125
Pour tester l'égalité pratique de 2 valeurs obtenues par des voies différentes, testez plutôt si la valeur absolue de leur différence est inférieure à un très petit seuil.
 

Pièces jointes

  • ValeursExcelVsVBA.xlsm
    72.2 KB · Affichages: 6
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour à tous,
Pour tester l'égalité pratique de 2 valeurs obtenues par des voies différentes, testez plutôt si la valeur absolue de leur différence est inférieure à un très petit seuil.
Oui sur le fichier du post #11 cette formule en B2 va bien :
Code:
=SI(ABS(A2-ENT(A2)-0,2)<CNUM("1E-14");"VRAI";"FAUX")
ou plus simplement :
Code:
=ABS(A2-ENT(A2)-0,2)<CNUM("1E-14")
Le problème se situe donc à partir de la 15ème décimale.

A+
 

Statistiques des forums

Discussions
312 206
Messages
2 086 214
Membres
103 158
dernier inscrit
laufin