Heim > Backend-Entwicklung > C++ > Wie kann ich in C effizient auf das nächste Vielfache aufrunden?

Wie kann ich in C effizient auf das nächste Vielfache aufrunden?

Linda Hamilton
Freigeben: 2024-11-29 10:45:11
Original
403 Leute haben es durchsucht

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

Aufrunden auf das nächste Vielfache: Eine umfassende Analyse in C

Die Aufgabe, eine Zahl auf das nächste Vielfache einer anderen Zahl aufzurunden kommt in der Programmierung häufig vor. In diesem Artikel werden wir den besten Ansatz zur Lösung dieser Aufgabe in C untersuchen.

Ursprüngliche Implementierung

Eine häufig verwendete Methode ist:

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);
}
Nach dem Login kopieren

Obwohl diese Implementierung unkompliziert erscheinen mag, weist sie Einschränkungen auf:

  • Sie funktioniert nur positiv Zahlen.
  • Es sind komplexe Berechnungen erforderlich, die möglicherweise zu Rundungsfehlern führen.

Verbesserte Lösung

Ein besserer Ansatz ist die Verwendung von Moduloperator, um den Rest zu berechnen. Wenn der Rest ungleich Null ist, addieren wir die Differenz zwischen dem Rest und dem Vielfachen zur ursprünglichen Zahl, um sie aufzurunden.

int roundUp(int numToRound, int multiple) {
  if (multiple == 0) {
    return numToRound;
  }

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

  return numToRound + multiple - remainder;
}
Nach dem Login kopieren

Fall für negative Zahlen

Abhängig von der Interpretation von „up“ für negative Zahlen kann eine negative Version der Funktion erforderlich sein.

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;
  }
}
Nach dem Login kopieren

Diese Implementierung behandelt beides Geben Sie positive und negative Zahlen richtig ein, indem Sie das Vorzeichen der Eingabe berücksichtigen. Es verwendet auch Ganzzahlarithmetik, was es effizient und genau macht.

Das obige ist der detaillierte Inhalt vonWie kann ich in C effizient auf das nächste Vielfache aufrunden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage