Salut, je me demande simplement pourquoi
System.out.println((double) (1/4));
imprime 0.25
mais
System.out.println((double) 1/4);
imprime 0.0
3 Réponses :
Le premier caste d'abord 1
en double
, puis effectue une division en virgule flottante.
Ce dernier effectue d'abord (1/4)
comme division entière et ensuite seulement convertit le résultat en double
.
La règle en Java est que si les deux opérandes sont des entiers, l'opération est une division entière; si l'un des opérandes est flottant, c'est une division en virgule flottante.
L'expression (double) 1/4
est égale à ((double) 1) / 4
. Autrement dit, il convertit la valeur entière 1
en valeur à virgule flottante 1.0
, et divise cette valeur en virgule flottante par 4
, ce qui donne 0,25
.
L'expression (double) (1/4)
effectue d'abord la division, en utilisant des entiers. Cela se traduit par la valeur entière 0
qui est ensuite convertie en double
.
Assurez-vous que 1 ou 4 est double. Déclaration:
var numérateur = 1.0
avec les parenthèses, il exécute d'abord 1/4, les deux étant des entiers, puis vous transtypez le résultat en double. sans eux, vous lancez d'abord 1 en double, puis exécutez la division
Division des nombres entiers