Les Allergies
Alimentaires
Posez votre question Signaler

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

arno - Dernière réponse le 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
Lire la suite 

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

4 réponses
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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 :)
Ajouter un commentaire
Ce document intitulé « [java] System.out.print((1.1)-1); => 0.100009 » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?