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!