[java] System.out.print((1.1)-1); => 0.100009

Fermé
arno - Modifié par arno le 3/04/2010 à 00:51
 arno - 3 avril 2010 à 23:24
Tout est dans le titre!
je debute en java, et mon programe ne marchant pas j'ai identifié mon erreur sur un cacul assez surprenant..

j'ai deux variables stockées dans des doubles id et id1 voila en gros mon probleme:

id=1.1;
id1=(id-1)*10

et quand je cherche a connaitre la valeur de id1 au moment t, le system.out.println me retourne 0.10000000000000009

donc la je seche un peu, est ce que cela viens de la fct print ou du stockage de mes variables?

merci d'avance



A voir également:

4 réponses

bonjour

C'est tout à fait normal.
Les nombres décimaux n'ont pas, la plupart du temps, de représentation exacte en binaire. Donc ton id = 1.1 ne contient pas exactement 1.1.
0
et comment resoudre mon probleme car j'ai vraiment besoin que mon calcul me renvoi 1 exactement

et si id=1.12345
il devras me retourner 1.2345

bref decaler vers la gauche en suprimant le premier chiffre
0
decaler vers la gauche en suprimant le premier chiffre
C'est du traitement de texte, ça, Quelques fonctions de manipulation de chaine. Pas de maths, donc pas de problème d'erreur de représentation numérique là-dedans
0
a vrai dire ce n'est pas exactement ce que je veut faire..

en gros 1,23456 represente un chemin

le premier chiffre corespond a la premiere porte a suivre
la deusieme a la deusieme porte etc..

en fait ce chiffre est associé a un noeud situé dans un arbre qui donne sa position dans l'arbre.

du coup pour recherchez dans l'arbre, je me sert de ce nombre pour retrouver son emplacement, et donc il me faut des valeur exacts :s

je te remerci de l'aide que tu m'apporte le père :)
0