Pb avec double - Java - Programmation
Marsh Posté le 24-11-2005 à 15:35:20
un début de réponse ?  
http://docs.sun.com/source/806-3568/ncg_goldberg.html
Marsh Posté le 24-11-2005 à 15:41:39
j'irais même jusqu'à lier le PDF de l'article originel, parce que la version HTML est pas très lisible.
Marsh Posté le 24-11-2005 à 19:02:08
Non. 
 
C'est dû à la représentation physique des doubles en mémoire selon la norme IEEE754 ![[:aloy] [:aloy]](https://forum-images.hardware.fr/images/perso/aloy.gif)
Marsh Posté le 24-11-2005 à 20:03:45
| masklinn a écrit : Non.  | 
 
Quoi, l'illisibilité de la version HTML ?    ![[:pingouino] [:pingouino]](https://forum-images.hardware.fr/images/perso/pingouino.gif) 
  
 
Dingue. ![[:dawa] [:dawa]](https://forum-images.hardware.fr/images/perso/dawa.gif)
Marsh Posté le 25-11-2005 à 07:34:57
| masklinn a écrit : Non.  | 
 
 
C'est ce que je dit.  Cette représentation physique constitue une approximation.
Marsh Posté le 25-11-2005 à 11:00:43
| Pfv3 a écrit : C'est ce que je dit.  Cette représentation physique constitue une approximation. | 
 
Non
Marsh Posté le 25-11-2005 à 16:16:00
et comment je fais moi ? 
 
pour le moment, j'arrondis avec un String et je repasse en double ! 
Marsh Posté le 25-11-2005 à 20:41:39
 
 
 
 
Oui, elle constitue une approximation. Essaye ceci : 
 
        double x = 0.0060708090405056; 
        System.out.println(x); 
        -->0.0060708090405056  C'est correct 
 
Maintenant essaye :  
 
        double x = 1777777777770.0060708090405056; 
        System.out.println(x); 
        --> 1.777777777770006E12     Il y a bien une approximation....Je viens de perdre des décimables 
 
 
Marsh Posté le 25-11-2005 à 21:38:36
| Pfv3 a écrit : Oui, elle constitue une approximation.  | 
 
T'es gentil, tu vas lire le Goldberg merci ![[:dawa] [:dawa]](https://forum-images.hardware.fr/images/perso/dawa.gif)
Marsh Posté le 26-11-2005 à 05:35:19
| masklinn a écrit : T'es gentil, tu vas lire le Goldberg merci  | 
 
 
J'ai dit "Cette représentation physique constitue une approximation."  
 
Tu as répondu "Non". 
 
Je vais te montré que tu as tort de dire ceci par une phrase de Golberg lui-même : 
 
"Squeezing infinitely many real numbers into a finite number of bits requires an APPROXIMATE REPRESENTATION." 
 
Maintenant si tu veux toujours me contredire, tu iras dire à cet auteur qu'il a tort maintenant de dire que la représentation des doubles est une approximation.  
Marsh Posté le 26-11-2005 à 11:48:37
| Pfv3 a écrit : Maintenant si tu veux toujours me contredire, tu iras dire à cet auteur qu'il a tort maintenant de dire que la représentation des doubles est une approximation.   | 
 
Tout dépend de quel référentiel tu parles ...
Marsh Posté le 26-11-2005 à 11:51:45
le tout est de passer d'une représentation à une autre. Et sur un nombre de "chiffres" donnés, tu ne peux pas forcément représenter toutes les valeurs d'une représentation dans une autre. 
 
PS : println() n'affiche pas la valeur exacte du double, mais une représentation sur un nombre de caractères réduits => tu ne peux pas te baser dessus pour connaître la valeur de ton double
Marsh Posté le 26-11-2005 à 17:14:14
De toute façon certains nombre décimaux, ne sont pas être exprimé de manière exact en base 10. Pareil pour le binaire(base 2)
Marsh Posté le 26-11-2005 à 18:58:21
| phnatomass a écrit : De toute façon certains nombre décimaux, ne sont pas être exprimé de manière exact en base 10 | 
 
pas définition, si  
 
c'est les nombres réels qui ne peuvent pas être exprimés en nombres décimaux 
Marsh Posté le 24-11-2005 à 15:21:22
En java, l'addition de deux "double" me fait ça (avec ces valeurs seulement)