Méthode fiable pour arrondir une division entière
La division entière s'arrondit vers zéro par défaut, ce qui peut poser problème. Pour garantir que nous arrondissons toujours, nous avons besoin d’une meilleure solution.
Dans l'exemple fourni dans l'article, convertir l'opérande en un nombre à virgule flottante double précision et utiliser Math.Ceiling()
est une solution de contournement possible, mais cela est considéré comme non standard et inefficace.
Nous recommandons les méthodes suivantes :
1. Définir clairement un cahier des charges
2. Concevoir des algorithmes testables
Divisez le problème en étapes plus petites :
3. Mettre en œuvre la solution
Ce qui suit est un exemple de mise en œuvre :
<code class="language-java">public static int DivRoundUp(int dividend, int divisor) { if (divisor == 0) throw new IllegalArgumentException("除数为零"); if (divisor == -1 && dividend == Integer.MIN_VALUE) throw new ArithmeticException("整数溢出"); int quotient = dividend / divisor; boolean dividedEvenly = (dividend % divisor) == 0; if (dividedEvenly) return quotient; boolean roundedDown = ((divisor > 0) == (dividend > 0)); return roundedDown ? quotient + 1 : quotient; }</code>
Cet algorithme est conforme au comportement spécifié consistant à arrondir tous les résultats de division non divisibles. Il gère également très bien les erreurs de débordement et de division par zéro. Bien que ce ne soit pas la solution la plus élégante, elle est claire, testable et correcte.
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!