comportement bizarre de la cellule

wainso

XLDnaute Occasionnel
bonsoir
je viens vers vous pour un truc hallucinant !!!

quand je tape =41023,848 dans n'importe quel cellule excel et je fait entrer puis je reviens sur la cellule, cette dernière affiche : 41,84799999 ??? que se passe t il ??
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : comportement bizarre de la cellule

Bonsoir.

Chez moi ce nombre n'est quand même pas transformé à ce point !
Mais, pas de chance, il ne peut être représenté exactement en Double,
et le plus proche c'est 176196085516075*2^-32
176196085516074*2^-32 = 41023,847999999765306711196899414
176196085516075*2^-32 = 41023,847999999998137354850769043
176196085516076*2^-32 = 41023,848000000230967998504638672
 

ERIC S

XLDnaute Barbatruc
Re : comportement bizarre de la cellule

Bonjour à tous

Dranreb, je pense que Wainso voulait écrire
41023,8479999999

Je suis d'accord sur ta conclusion le numérique reste le numérique
et on ne peut pas y faire grand chose. Si c'est le salaire mensuel que Wainso veut me verser, je prends quand même :)
 

wainso

XLDnaute Occasionnel
Re : comportement bizarre de la cellule

bonjour
merci pour vos réponse mais je n'ai pas très bien saisi !! pouvez vous être plus explicite

et ça c'est quoi exactement ??

176196085516074*2^-32 = 41023,847999999765306711196899414
176196085516075*2^-32 = 41023,847999999998137354850769043
176196085516076*2^-32 = 41023,848000000230967998504638672
 

ERIC S

XLDnaute Barbatruc
Re : comportement bizarre de la cellule

Re

en numérique les nombres sont codés avec des 1 et des 0 et leur longueur de codage est limitée
exemple sur 8 bits pour les petits c'est assez simple
0 --> 00000000
1 --> 00000001
2 --> 00000010
...
255 ->11111111
on travaille en "puissance de 2" : Le 1 de droite vaut 1, et en se décalant vers la gauche, 2, 4, 8, 16, 32...

pour un nombre à virgule cela se complique le codage doit indiquer la virgule et cela correspond à une division par 10, 100....

mais sur mon exemple 8 bits (simplifié), on n'a toujours que 8 bits :

imagine que l'on utilise les 3 bits de droite pour indiquer cette virgule (000 = pas de virgule, 001 (diviser par 10), 010 (diviser par 100), 100 (diviser par 1000)

cela correspond à la notation scientifique des calculatrices

il reste alors les 5 bits de gauche pour coder, donc de 00000 (0) à 11111 (31)

10000 100 représente 16/1000 = 0.016
10001 100 représente 17/1000 = 0.017

tu ne peux pas coder 0.0161 cela dépasse les limites du codage. Sur Excel c'est la même chose mais comme on a beaucoup plus que 8 bits l'erreur reste infime mais il y a possibilité d'erreur. C'est pour cela qu'il faut quelquefois faire attention à l'ordre dans lequel on enchaine des opérations * et / car quand on dépasse la capacité d'un codage normal, il y aura approximation

je reprends mon exemple précédent sur 8 bits, je veux faire 0.001*10/10 soit 0.001 attendu
Si je commence par multiplier, (0.001*10)/10, cela fonctionnera (calcul entre parenthèses prioritaire)
Si je commence par diviser (0.001/10)*10 je passe en dessous de mes capacités de codage et au lieu de 0.0001 je vais avoir en intermédiaire 0.000 que je multiplie par 10 ce qui donne 0.000

Pas simple d'expliquer cela précisément, j'espère t'avoir donné une bonne idée du principe
 

Discussions similaires

Statistiques des forums

Discussions
312 348
Messages
2 087 508
Membres
103 568
dernier inscrit
NoS