Problème avec nombres décimaux : 1.2 -> 1.19999384148789

Problème avec nombres décimaux : 1.2 -> 1.19999384148789 - Win NT/2K/XP - Windows & Software

Marsh Posté le 25-05-2003 à 15:49:05    

C'est sur l'ordi de ma mère.
 
Partout où il y a des nombres décimaux, ils ne s'affichent pas bien : genre dans Excel, quand je tape 1.2, il s'affiche "1.19999384148789". Pareil dans Internet Explorer, quand je télécharge un truc, il m'écrit pas "460.7 Ko", mais "460.69999767887 Ko"...
 
J'ai formaté le bordel, tout réinstallé, mais ça ne change rien.
 
HEEEELP ! D'où ça vient ? Est-ce le processeur qu'est grillé (un XP2000+ qui tourne à 70° est étrange...) ?
 
Thanx !

Reply

Marsh Posté le 25-05-2003 à 15:49:05   

Reply

Marsh Posté le 25-05-2003 à 16:06:22    

J'imagine que ca a un rapport avec les "options régionales" (là où on choisit la monnaie, le format de la date...)

Reply

Marsh Posté le 25-05-2003 à 20:10:34    

mrBebert a écrit :

J'imagine que ca a un rapport avec les "options régionales" (là où on choisit la monnaie, le format de la date...)


 
Ca viens pas de ça, déjà vérifié. Le plus étrange c'est que après formatage, ça fait pareil...

Reply

Marsh Posté le 25-05-2003 à 20:22:28    

Féllicitations ! Tu viens de découvrir par toi même qu'un nombre décimal ne peut être représenté de manière exacte sur un processeur.
 
Un nombre décimal est représenté en mémoire par un nombre fini de bits, par conséquent une représentation exacte n'est pas possible. Seuls les entiers peuvent avoir une représentation exacte.
 
Les nombres décimaux sont représentés généralement sur 32, 94 voir 96 bits suivant la précision ou plage de valeurs souhaitée.
 
Toutefois la plus part du temps le nombre est arrondi à quelques décimales et la valeur est suffisament précise pourq ue même après plusieurs calculs l'erreur reste acceptable. Pourquoi tu n'as plus cet arrondi cela est un mystère ;)

Reply

Marsh Posté le 25-05-2003 à 20:41:54    

Merci, tu viens de me ré-apprendre ce que je sais déjà... enfin bon !
 
 
C'est clair que c'est mystérieux tout-ça... Et pis ça apparaît partout. Genre une animation Flash qui affiche le nombre d'octets déjà chargés souffre du même symptôme, sous excel, dans un logiciel de compta, parout... sauf la calculatrice windows qui est épargnée...

Reply

Marsh Posté le 25-05-2003 à 20:53:14    

c'est le bug du pentium? :lol:

Reply

Marsh Posté le 25-05-2003 à 20:54:21    

Blazkowicz a écrit :

c'est le bug du pentium? :lol:


 
 :lol:  
 
C'est un athlon XP2000+  :pt1cable:  :pt1cable:

Reply

Marsh Posté le 25-05-2003 à 20:59:03    

oops j'avais pas vu  :pt1cable:  
je me suis dit : ordi de ta mère, donc vieux PC pour word et le solitaire :o

Reply

Marsh Posté le 25-05-2003 à 23:08:06    

Requin a écrit :

Féllicitations ! Tu viens de découvrir par toi même qu'un nombre décimal ne peut être représenté de manière exacte sur un processeur.
 
Un nombre décimal est représenté en mémoire par un nombre fini de bits, par conséquent une représentation exacte n'est pas possible. Seuls les entiers peuvent avoir une représentation exacte.
 
Les nombres décimaux sont représentés généralement sur 32, 94 voir 96 bits suivant la précision ou plage de valeurs souhaitée.
 
Toutefois la plus part du temps le nombre est arrondi à quelques décimales et la valeur est suffisament précise pourq ue même après plusieurs calculs l'erreur reste acceptable. Pourquoi tu n'as plus cet arrondi cela est un mystère ;)


Merci pour la leçon ! Mais pourquoi ça fait ça uniquement chez lui ?

Reply

Marsh Posté le 26-05-2003 à 00:45:10    

Requin a écrit :

Féllicitations ! Tu viens de découvrir par toi même qu'un nombre décimal ne peut être représenté de manière exacte sur un processeur.
 
Un nombre décimal est représenté en mémoire par un nombre fini de bits, par conséquent une représentation exacte n'est pas possible. Seuls les entiers peuvent avoir une représentation exacte.
 
Les nombres décimaux sont représentés généralement sur 32, 94 voir 96 bits suivant la précision ou plage de valeurs souhaitée.
 
Toutefois la plus part du temps le nombre est arrondi à quelques décimales et la valeur est suffisament précise pourq ue même après plusieurs calculs l'erreur reste acceptable. Pourquoi tu n'as plus cet arrondi cela est un mystère ;)


 
 
Menfin bon, le nombre "1.2" est parfaitement stockable tel quel en single precision fp sans arrondi aucun  :sarcastic: avec une précision de 2 (.12) pour la fraction et l'exposant=1. Si la précision requise dépasse la magnitude d'un nombre fp en 32 bits, alors là effectivement il y a des arrondis ...
 
Ton proc a un pb clairement avec les nombre en virgule flottante, il est sans doute défectueux pour 1 raison X ou Y :/
 
EDIT : j'ai mis en gras la partie erronée de ton post, ce n'est valable que pour les nombres flottants dont la magnitude depassé celle de l'unité de stockage (par exemple c'est 23 pour un 32 bits flottant)
 
D'autant plus que le terme "nombres décimaux" est plutôt incorrect, on utilise le terme de flottants.


Message édité par stilgars le 26-05-2003 à 00:59:50
Reply

Marsh Posté le 26-05-2003 à 00:45:10   

Reply

Marsh Posté le 26-05-2003 à 08:47:32    

:jap:

Reply

Marsh Posté le 26-05-2003 à 08:49:46    

J'vous parie que c'est la FPU qu'a grillé méchamment...

Reply

Marsh Posté le 26-05-2003 à 12:55:50    

:bounce:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed