Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1014 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] 5.3-5.2= ??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA] 5.3-5.2= ??

n°604147
noldor
Rockn'roll
Posté le 06-01-2004 à 19:26:29  profilanswer
 

Code :
  1. public class Test {
  2.     public static void main(String[] panthere) {
  3.         double a = 5.3;
  4.         double b = 5.2;
  5.         double d = a-b;
  6.         System.out.println(new Double(d).toString());
  7.     }
  8. }


[noldor@mithrandil ~/test]$ java Test
0.09999999999999964
 
J'ai loupé un épisode ou quoi ?
Je suis en train de développer une calculatrice, et ce genre de chose me gêne beaucoup. Peut-on l'éviter ?
 

mood
Publicité
Posté le 06-01-2004 à 19:26:29  profilanswer
 

n°604162
benou
Posté le 06-01-2004 à 19:37:51  profilanswer
 

y a un topic concernant ce problème :  
http://forum.hardware.fr/hardwaref [...] -40339.htm
 
bonne lecture ! ;)


---------------
ma vie, mon oeuvre - HomePlayer
n°604165
benou
Posté le 06-01-2004 à 19:40:41  profilanswer
 

La conclusion c'est que un calcul en flottant ne sera jamais juste. C'est dû au fait que les flotant sont sauvegardé en base 2 et pas en abse 10 =>  5.3 pour toi c'est unn nombre juste, mais en base 2, il n'y a pas de repésentation juste possible => ca devient une approximation.
 
Conclusion, tu dois choisir un niveau de précision et t'en tenir à ce niveau là.
 
Autre solution, utiliser la classe BigDecimal avec son constructeur sous forme de chaine de caractère


---------------
ma vie, mon oeuvre - HomePlayer
n°604166
noldor
Rockn'roll
Posté le 06-01-2004 à 19:41:10  profilanswer
 

merci beaucoup
je me doutais bien que ça venait de la façon dont les doubles sont stockés, mais là j'ai quand même été surpris !!
 
EDIT : en fait, l'un de mes 2 neurones a oublié qu'en info on bosse en base 2


Message édité par noldor le 06-01-2004 à 19:43:06
n°604167
benou
Posté le 06-01-2004 à 19:42:46  profilanswer
 

noldor a écrit :

merci beaucoup
je me doutais bien que ça venait de la façon dont les doubles sont stockés, mais là j'ai quand même été surpris !!


si tu utilises un DecimalFormat avec quelques chiffres après la virgule pour afficher ton double, tu veras que tu obtiendras l'affichage auquel tu t'attendais


---------------
ma vie, mon oeuvre - HomePlayer
n°604170
noldor
Rockn'roll
Posté le 06-01-2004 à 19:43:29  profilanswer
 

benou a écrit :


si tu utilises un DecimalFormat avec quelques chiffres après la virgule pour afficher ton double, tu veras que tu obtiendras l'affichage auquel tu t'attendais

c'est la solution que je vais adopter en effet
encore merci !

n°604174
chrisbk
-
Posté le 06-01-2004 à 19:48:33  profilanswer
 

Code :
  1. System.out.println(new Double(d).toString());


 
ca a un interet de faire ca au lieu d'un bete println(d) ?
 
 

n°604180
the real m​oins moins
Posté le 06-01-2004 à 19:54:24  profilanswer
 

chrisbk a écrit :

Code :
  1. System.out.println(new Double(d).toString());


 
ca a un interet de faire ca au lieu d'un bete println(d) ?
 
 
 

non  [:icon12]


Message édité par the real moins moins le 06-01-2004 à 19:54:42

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°604204
noldor
Rockn'roll
Posté le 06-01-2004 à 20:18:47  profilanswer
 

en effet, c'est parce que j'ai fait un copier/coller/adapter d'un morceau de code où j'avais besoin d'un String

n°604214
the real m​oins moins
Posté le 06-01-2004 à 20:26:33  profilanswer
 

noldor a écrit :

en effet, c'est parce que j'ai fait un copier/coller/adapter d'un morceau de code où j'avais besoin d'un String

Double.toString(d) ;)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
mood
Publicité
Posté le 06-01-2004 à 20:26:33  profilanswer
 

n°604216
the real m​oins moins
Posté le 06-01-2004 à 20:27:10  profilanswer
 

tain il est chelou le source de cette methode :heink:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°604221
benou
Posté le 06-01-2004 à 20:32:53  profilanswer
 

the real moins moins a écrit :

tain il est chelou le source de cette methode :heink:


ouep :/

n°604222
the real m​oins moins
Posté le 06-01-2004 à 20:33:41  profilanswer
 

c'est pareil pour Float tiens


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°604223
the real m​oins moins
Posté le 06-01-2004 à 20:34:05  profilanswer
 

tiens, comique le code de Integer.toString(i)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] 5.3-5.2= ??

 

Sujets relatifs
[java/algo] Concours - implémenter une itf simple de gestion d'agenda.Recherche editeurs de jeu en flash ou java?
[java]Problème d'import de classe swing[JAVA] Où trouver une bonne initiation à la création de webservices ?
Un script en java pour réactualiser une image ?Qq'un connait un bon couple lexer/parser LALR en java?
JAVA Network ProgrammingPlusieurs questions en Java
JAVA : connaissez vous ces outils (pas d'info sur le forum)SMTP, e-mail et Java ?
Plus de sujets relatifs à : [JAVA] 5.3-5.2= ??


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR