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

Comment garantir que la division entière soit toujours arrondie ?

Patricia Arquette
Libérer: 2025-01-20 09:22:09
original
589 Les gens l'ont consulté

How to Guarantee Integer Division Always Rounds Up?

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

Explication

Cette fonction gère méticuleusement toutes les situations possibles, notamment :

  • Cas d'exception : Il détecte et lève une exception si une division par zéro se produit ou si le plus petit entier négatif (Integer.MIN_VALUE) est divisé par -1.
  • Détermination du quotient : Il calcule d'abord le quotient à l'aide d'opérations arithmétiques entières (dividende/diviseur).
  • Vérification du reste : Il détermine si la division produit un reste entier. S'il n'y a pas de reste, le quotient obtenu par division entière a été arrondi au supérieur, le quotient est donc renvoyé.
  • Décision d'arrondir : S'il y a un reste, elle détermine si le quotient doit être arrondi à l'inférieur (en raison des signes opposés du dividende et du diviseur) ou arrondi au supérieur (en raison du même signe de le dividende et le diviseur). Sur cette base, il ajuste le quotient en conséquence.

Considérations clés

  • Priorité de l'arithmétique entière : Cette solution reste entièrement dans le cadre de l'arithmétique entière, comme l'exige l'énoncé du problème.
  • Simplicité et clarté : Le code est concis et clair, mettant l'accent sur l'exactitude plutôt que sur la technique.
  • Prise en charge complète : Il anticipe et gère toutes les situations possibles pour assurer un arrondi cohérent.

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!

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