Maison > développement back-end > C++ > Comment pouvons-nous garantir que la division entière est toujours arrondie ?

Comment pouvons-nous garantir que la division entière est toujours arrondie ?

Susan Sarandon
Libérer: 2025-01-20 09:11:08
original
241 Les gens l'ont consulté

How Can We Ensure Integer Division Always Rounds Up?

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

  • Identifiez et définissez tous les scénarios de saisie possibles.
  • Spécifiez le comportement attendu dans chaque scénario.
  • Inclut la gestion des erreurs pour la division zéro et le dépassement d'entier.

2. Concevoir des algorithmes testables

  • Divisez le problème en étapes plus petites :

    • Calculez le quotient entier.
    • Déterminez si la division est divisible (pas de reste).
    • Vérifiez le signe de l'opérande pour déterminer le sens de l'arrondi.

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal