Un moyen de garantir que la division entière est toujours arrondie
Cet article vise à trouver un moyen fiable de garantir que la division entière est toujours arrondie.
Révision de la méthode originale
La suggestion originale était de convertir l'entier en un nombre à virgule flottante double précision et d'arrondir le résultat à l'aide de la fonction Math.Ceiling()
. Bien que cette approche semble fonctionner, les conversions de types peuvent introduire une complexité inutile et des problèmes potentiels de précision.
Une solution robuste
Pour résoudre ce problème, une solution plus complète et robuste est proposée ci-dessous :
<code class="language-java">public static int DivRoundUp(int dividend, int divisor) { if (divisor == 0 || (dividend == Integer.MIN_VALUE && divisor == -1)) throw new ArithmeticException("Invalid input"); // 显式处理异常情况 int roundedTowardsZeroQuotient = dividend / divisor; boolean dividedEvenly = (dividend % divisor) == 0; if (dividedEvenly) return roundedTowardsZeroQuotient; boolean wasRoundedDown = ((divisor > 0) == (dividend > 0)); if (wasRoundedDown) return roundedTowardsZeroQuotient + 1; else return roundedTowardsZeroQuotient; }</code>
Explication
Cette fonction gère méticuleusement toutes les situations possibles, notamment :
Considérations clés
En suivant ces principes, nous pouvons développer un code d'arrondi robuste et fiable pour la division entière.
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!