Maison >développement back-end >C++ >Comment pouvons-nous garantir l'arrondi à la hausse dans une division entière ?
Méthode fiable pour arrondir une division entière
Les opérations sur les nombres entiers peuvent être délicates, et la division ne fait pas exception. Bien que le comportement par défaut pour la division entière soit d'arrondir vers zéro, il existe des situations dans lesquelles l'arrondi est préférable. Cet article explore les méthodes de mise en œuvre de l'arrondi en division entière, aborde les lacunes des solutions existantes et propose une mise en œuvre robuste.
Énoncé du problème
Le but est d'implémenter une fonction de division entière qui arrondit toujours le résultat. La méthode existante consiste à convertir un nombre à virgule flottante double précision et à utiliser Math.Ceiling()
, ce qui peut être fastidieux puisque des opérations à virgule flottante sont impliquées.
Solution
Une gestion minutieuse de l’arithmétique des nombres entiers est cruciale. En définissant soigneusement le comportement souhaité et en décomposant le problème en étapes gérables, vous pouvez concevoir des solutions plus élégantes et plus efficaces.
Pour mettre en œuvre cette spécification, nous devons calculer le quotient entier, déterminer si la division est paire et déterminer s'il faut arrondir vers le haut ou vers le bas.
<code class="language-java">public static int DivRoundUp(int dividend, int divisor) { if (divisor == 0) throw new ArithmeticException("除以零"); if (divisor == -1 && dividend == Integer.MIN_VALUE) throw new ArithmeticException("溢出错误"); int roundedQuotient = dividend / divisor; boolean dividedEvenly = (dividend % divisor) == 0; if (dividedEvenly) { return roundedQuotient; } else { boolean roundedDown = ((divisor > 0) == (dividend > 0)); if (roundedDown) { return roundedQuotient + 1; } else { return roundedQuotient; } } }</code>
Cette solution est conforme aux spécifications et relativement facile à comprendre. Il évite les conversions en nombres à virgule flottante double précision et la gestion complexe des erreurs, ce qui le rend à la fois efficace et robuste.
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!