Division Int : dévoiler la vérité derrière 1/3 == 0
La division entière en Java peut être un concept déroutant, surtout quand elle implique des valeurs décimales. La question qui se pose est de savoir pourquoi le résultat de 1/3 est égal à 0, même si nous nous attendons à ce qu'il soit 0,333...
Dévoilement de l'arithmétique
Dans ce cas particulier Dans ce cas, les deux opérandes (1 et 3) sont des nombres entiers, ce qui signifie que l'arithmétique des nombres entiers est utilisée par défaut. Malgré la déclaration de la variable résultat (g) comme double, une conversion implicite se produit après la division.
Les subtilités de la division entière
Division entière, par opposition à la division flottante division par points, arrondit le résultat vers zéro. Le vrai résultat de la division, 0,333..., est par conséquent arrondi à 0. Le processeur traite essentiellement la partie décimale comme si elle n'était pas là.
Arithmétique à virgule flottante : une histoire différente
Si les deux opérandes sont fournis sous forme de nombres à virgule flottante (3.0 et 1.0), l'arithmétique à virgule flottante prend priorité. Cela donne la valeur fractionnaire attendue de 0,333.... Notez que même si seul le premier opérande est un flottant (par exemple, 3,0 et 1), l'arithmétique à virgule flottante est toujours utilisée.
Pratique Solutions
Pour obtenir le résultat décimal, il est nécessaire d'effectuer explicitement une division en virgule flottante. Ceci peut être réalisé en transformant les deux opérandes en doubles ou en flottants :
public static void main(String[] args) { double g = (double) 1 / 3; // Explicitly cast to double System.out.printf("%.2f", g); }
Alternativement, on peut utiliser la classe BigDecimal pour des opérations numériques plus précises.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!