Arrondir au multiple le plus proche : une analyse complète en C
La tâche d'arrondir un nombre au multiple le plus proche d'un autre nombre est un problème courant en programmation. Dans cet article, nous explorerons la meilleure approche pour accomplir cette tâche en C.
Implémentation originale
Une méthode couramment utilisée est :
int roundUp(int numToRound, int multiple) { if (multiple == 0) { return numToRound; } int roundDown = ((int)(numToRound) / multiple) * multiple; int roundUp = roundDown + multiple; int roundCalc = roundUp; return (roundCalc); }
Bien que cette mise en œuvre puisse sembler simple, elle présente des limites :
Solution améliorée
Une meilleure approche consiste à utiliser les opérateur de module pour calculer le reste. Si le reste est différent de zéro, nous ajoutons la différence entre le reste et le multiple au nombre d'origine pour l'arrondir.
int roundUp(int numToRound, int multiple) { if (multiple == 0) { return numToRound; } int remainder = numToRound % multiple; if (remainder == 0) { return numToRound; } return numToRound + multiple - remainder; }
Cas des nombres négatifs
Selon l'interprétation de "up" pour les nombres négatifs, une version négative de la fonction peut être nécessaire.
int roundUp(int numToRound, int multiple) { 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; } }
Cette implémentation gère à la fois nombres positifs et négatifs correctement en considérant le signe de l'entrée. Il utilise également l'arithmétique entière, ce qui le rend efficace et précis.
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!