Maison >Java >javaDidacticiel >Pourquoi la division entière en Java produit-elle 0,0 au lieu d'un résultat décimal ?

Pourquoi la division entière en Java produit-elle 0,0 au lieu d'un résultat décimal ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-26 02:18:14856parcourir

Why Does Integer Division in Java Produce 0.0 Instead of a Decimal Result?

Pourquoi la division entière de Java donne-t-elle 0,0 ?

Lors de la division de deux entiers en Java, le résultat n'est souvent pas celui auquel on pourrait s'attendre :

int totalOptCount = 500;
int totalRespCount = 1500;
float percentage = (float) (totalOptCount / totalRespCount);

Dans ce cas, vous vous attendez à ce que le pourcentage soit de 0,33 (ou 0,333 arrondi). Cependant, vous pourriez être surpris de constater qu'il renvoie en réalité 0,0. Pourquoi est-ce le cas ?

Ordre de conversion à la rescousse

La raison de ce résultat inattendu réside dans l'ordre dans lequel Java effectue ses calculs. Lorsque vous divisez deux entiers, Java les convertit automatiquement en doubles. Mais cette conversion n’a lieu qu’après la division. Ainsi, dans l'exemple ci-dessus, le calcul est en fait effectué comme ceci :

double percentage = totalOptCount / totalRespCount;

Ce qui donne une valeur double de 0,0. Pour résoudre ce problème, vous devez convertir explicitement l'un des opérandes en float ou double avant d'effectuer la division :

float percentage = ((float) totalOptCount) / totalRespCount;

Maintenant, la conversion en float se produit en premier et la division est effectuée sur le float valeurs, ce qui donne la valeur flottante correcte de 0,333333.

Formatage pour décimal Précision

Une fois que vous avez le résultat correct, vous souhaiterez peut-être le formater avec une précision décimale spécifique. Vous pouvez utiliser la méthode String.format() pour ce faire :

String str = String.format("%2.02f", percentage);

Cela formatera la variable de pourcentage en une chaîne avec deux décimales, ce qui donnera la valeur 00,33.

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!

Déclaration:
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