Maison > Java > javaDidacticiel > Pourquoi 1/3 est-il égal à 0 dans la division entière Java ?

Pourquoi 1/3 est-il égal à 0 dans la division entière Java ?

Barbara Streisand
Libérer: 2024-12-28 07:49:10
original
239 Les gens l'ont consulté

Why Does 1 / 3 Equal 0 in Java Integer Division?

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);
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal