Secondes ===> Années, jours, heures, ....

Résolu/Fermé
Martoufff Messages postés 18 Date d'inscription dimanche 13 janvier 2013 Statut Membre Dernière intervention 22 juillet 2014 - 2 févr. 2013 à 15:05
Martoufff Messages postés 18 Date d'inscription dimanche 13 janvier 2013 Statut Membre Dernière intervention 22 juillet 2014 - 3 févr. 2013 à 15:05
Bonjour,


J'ai depuis peu commencé la programmation en JAVA et je suis confronté à des résultats inattendus ...

Je vous passe le code :D ( http://pastebin.com/0AXRiJSg )

Quand je mets un nombre trop important:

- le nombre de jours dépasse 365,25
- le nombre d'heures , 24 ...
- Etc ...


Merci de bien vouloir m'aider même si cela doit vous paraître obvious ...
:)

Martoufff

1 réponse

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
2 févr. 2013 à 17:21
"Quand je mets un nombre trop important"
Genre combien ?

De plus je suis surpris par ton code en général, d'habitude on commence d'abord par calculer le nombre de secondes, puis le nombre de minutes, et enfin le nombre d'heures et de jours, et on manipule toujours des entiers parce que les double ne sont pas très précis...
0
Martoufff Messages postés 18 Date d'inscription dimanche 13 janvier 2013 Statut Membre Dernière intervention 22 juillet 2014 4
2 févr. 2013 à 23:48
Merci d'avoir essayé de m'aider !


Depuis j'ai réussi à résoudre mon problème ( que je vais marquer comme étant résolu de ce pas ... ) en remplaçant le type de variable double par long.



Pourquoi est ce que ca change tout ?

Pour moi, le type float c'est un integer avec la possibilité d'avoir un/des chiffre(s) après la virgule ...
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
Modifié par KX le 3/02/2013 à 00:51
Le type float c'est un integer avec la possibilité d'avoir un/des chiffre(s) après la virgule

Non ça n'a rien à voir, les types float et double ont des précisions limitées, donc les calculs ne sont jamais exacts. Evidemment pour des opérations simples ça se passe plutôt bien, mais plus la valeur augmente, plus la précision après les virgules diminuent.

Tu peux tester ceci par exemple :

int n = 16777216; // 2^24
int m = (n + 1) - n;
System.out.println(m); // 1 : normal

float f = 16777216; // 2^24
float g = (f + 1) - f;
System.out.println(g); // 0.0 : erreur de précision
0
Martoufff Messages postés 18 Date d'inscription dimanche 13 janvier 2013 Statut Membre Dernière intervention 22 juillet 2014 4
3 févr. 2013 à 15:05
Ok !


Je te remercie d'avoir pris le temps de m'expliquer !
0