Réponses
Trop de publicités?double num = 5;
Qui évite un plâtre. Mais vous trouverez que le casting conversions sont bien définis. Vous n'avez pas à deviner, il suffit de cocher la JLS. int en double est un élargissement de conversion. De §5.1.2:
L'élargissement primitive conversions ne sont pas perdre des informations sur l'ensemble de la ordre de grandeur d'une valeur numérique.
[...]
La Conversion d'un int ou un long valeur flotter, ou d'une valeur de type long à double, qui peut entraîner la perte de précision-c'est, le résultat peut perdre certains des bits de poids faible de la valeur. Dans ce cas, l' valeur à virgule flottante sera un arrondie version de la valeur d'entier, en utilisant la norme IEEE 754 d'arrondi au plus proche du mode (§4.2.4).
5 peut être exprimé exactement comme un double.
Je n'aime pas le casting primitives, qui sait ce qui peut arriver.
Pourquoi avez-vous une peur irrationnelle de la coulée de primitives? Rien de mauvais va se passer lorsque vous lancez un
int
d'undouble
. Si vous n'êtes tout simplement pas sûr de savoir comment il fonctionne, regarder la Java Language Specification. Le coulage d'unint
dedouble
est un élargissement des primitives de conversion.Vous pouvez vous débarrasser de la paire de parenthèses par le casting du dénominateur au lieu de le numérateur:
double d = num / (double) denom;
Juste pour ajouter à la conversation que coulée le résultat ne le ferai pas
Cela signifie que vous devez vous rappeler de se faufiler dans un double à nouveau si votre formule change. C’est aussi la raison pour laquelle que je ne préfère pas la solution de changer le type d’une variable à double comme la réponse acceptée (parce que si cette variable cesse d’être partie du calcul du résultat est foiré).