Maison > développement back-end > C++ > Comment arrondir efficacement au multiple le plus proche en C ?

Comment arrondir efficacement au multiple le plus proche en C ?

DDD
Libérer: 2024-11-29 03:10:09
original
353 Les gens l'ont consulté

How to Efficiently Round Up to the Nearest Multiple in C  ?

Meilleure approche pour arrondir aux multiples supérieurs en C

En C, arrondir un nombre au multiple supérieur le plus proche d'un nombre donné peut être obtenu efficacement en utilisant la technique suivante :

int roundUp(int numToRound, int multiple)<br>{</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">if (multiple == 0)
    return numToRound;

int remainder = numToRound % multiple;
if (remainder == 0)
    return numToRound;

return numToRound + multiple - remainder;
Copier après la connexion

}

Cette méthode utilise l'arithmétique entière de base pour calculer le multiple le plus proche pour les nombres positifs. C'est simple et fonctionne efficacement.

Gestion des nombres négatifs

Lors de l'arrondi des nombres négatifs, la définition de « vers le haut » devient ambiguë. En fonction de l'application spécifique, différentes interprétations de l'arrondi peuvent être appropriées. La solution fournie suppose que l'arrondi signifie un résultat toujours supérieur ou égal au nombre saisi :

int roundUp(int numToRound, int multiple)<br>{</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">if (multiple == 0)
    return numToRound;

int remainder = abs(numToRound) % multiple;
if (remainder == 0)
    return numToRound;

if (numToRound < 0)
    return -(abs(numToRound) - remainder);
else
    return numToRound + multiple - remainder;
Copier après la connexion

}

Cette fonction modifiée garantit que quel que soit le signe de l'entrée nombre, le résultat ne sera jamais inférieur à l'entrée elle-même.

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
Article précédent:Pourquoi `std::queue::pop()` ne renvoie-t-il pas de valeur ? Article suivant:Comment puis-je créer un itérateur d’aplatissement en C pour itérer sur des conteneurs imbriqués ?
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
Derniers numéros
Rubriques connexes
Plus>
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal