Bonjour à tous lorsque je fais des calculs en java et que le résultat est proche de 0 ça me donne comme résultat 0 exemple:
ça m'affiche 0Code:
1
2 system.out.println(new Double(9/1));
Version imprimable
Bonjour à tous lorsque je fais des calculs en java et que le résultat est proche de 0 ça me donne comme résultat 0 exemple:
ça m'affiche 0Code:
1
2 system.out.println(new Double(9/1));
j'ai 9.0 qui s'affiche.
Désolé j'ai commis une erreur c plutôt:
Code:
1
2 system.out.println(new Double(9/12));
Effectivement, c'est plus clair :aie:.
9 et 12 sont tous les deux des entiers, donc 9/12 effectue une division entière, dont le résultat est zéro.
Ce n'est qu'après avoir calculé ce résultat que tu commences à parler de Double, et donc tu convertis l'entier zéro en double, ce qui vaut toujours zéro.
Essaie avec 9.0/12
Pour éviter d'avoir des problèmes aussi avec les arrondis quand tu fais des opérations avec des Double ou Float, indique la lettre correspondante avec les nombres:
Java fait un cast en Integer sinon sur les nombres.Code:
1
2 Double doubleExemple = 9.0D / 12.0D; Float floatExemple = 9.0F / 12.0F;
Je suis pas sûr de comprendre ce que tu veux dire. À partir du moment où tu mets une virgule, ce n'est pas un int et il n'y a pas de cast.
ouais, seule le f à de l'intérêt dans cet exemple car il force un calcul en float et non pas en double. Sinon dès qu'il y a séparateur décimal, pour le compilateur, c'est une double.
Merci à tous voilà ce que j'ai fais et ça marche très bien
Code:
1
2
3 DecimalFormat df = new DecimalFormat("0.00"); System.out.println(df.format(new Double(a)/new Double(b)));
C'est un peu overkill là tu fait
alors que tu pourrais faire direct a-> double.Code:
1
2 a -> double -> Double -> double -> division\ b -> double -> Double -> double -> division---> resultat
Je ne comprends pas stp
ton new Double crée des objets inutile dont tu n'a pas besoin pour le calcul. Ton code est traduit comme ça par le compilateur:
Tu crée deux objets et tu appelle deux méthodes inutilesCode:
1
2 DecimalFormat df = new DecimalFormat("0.00"); System.out.println(df.format(new Double((double)a).doubleValue()/new Double((double)b).doubleValue()));
Alors que tu aurais pu écrire directement
Code:
1
2 DecimalFormat df = new DecimalFormat("0.00"); System.out.println(df.format((double)a/b));
En effet a et b sont des entiers donc leur division renvoi un entier d'où le besoin de les convertir
C'est ce que fait l'exemple que je t'ai donnée, sans passer par la tartine du java.lang.Double qui bouffe de la resource.
Double, tu utilise quand t'as besoin d'un objet. Ici, pour ton calcul tout bête, t'as pas besoin d'objet.
Ok merci ça marche très bien