5.3-5.2= ?? [JAVA] - Java - Programmation
Marsh Posté le 06-01-2004 à 19:37:51
y a un topic concernant ce problème :
http://forum.hardware.fr/hardwaref [...] -40339.htm
bonne lecture !
Marsh Posté le 06-01-2004 à 19:40:41
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
Marsh Posté le 06-01-2004 à 19:41:10
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
Marsh Posté le 06-01-2004 à 19:42:46
noldor a écrit : merci beaucoup |
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
Marsh Posté le 06-01-2004 à 19:43:29
benou a écrit : |
c'est la solution que je vais adopter en effet
encore merci !
Marsh Posté le 06-01-2004 à 19:48:33
Code :
|
ca a un interet de faire ca au lieu d'un bete println(d) ?
Marsh Posté le 06-01-2004 à 19:54:24
chrisbk a écrit :
|
non
Marsh Posté le 06-01-2004 à 20:18:47
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
Marsh Posté le 06-01-2004 à 20:26:33
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)
Marsh Posté le 06-01-2004 à 20:27:10
the real moins moins a écrit : Double.toString(d) |
tain il est chelou le source de cette methode
Marsh Posté le 06-01-2004 à 20:32:53
ReplyMarsh Posté le 06-01-2004 à 20:33:41
benou a écrit : |
c'est pareil pour Float tiens
Marsh Posté le 06-01-2004 à 20:34:05
tiens, comique le code de Integer.toString(i)
Marsh Posté le 06-01-2004 à 19:26:29
[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 ?