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

Résolu
Martoufff Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
Martoufff Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
"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   Statut Membre Dernière intervention   4
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention   4
 
Ok !


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