Die Rundungsfunktion in C

Jinku Hu 12 Oktober 2023
  1. Verwenden Sie die Funktion round, um Fließkommazahlen auf die nächste Ganzzahl zu runden und eine Fließkommazahl zurückzugeben
  2. Verwenden Sie die Funktion lround, um eine Fließkommazahl auf die nächste Ganzzahl zu runden und einen Integralwert zurückzugeben
  3. Verwenden Sie die Funktion ceil, um Fließkommazahlen auf den kleinsten ganzzahligen Wert zu runden, der nicht kleiner ist als das Argument
Die Rundungsfunktion in C

In diesem Artikel werden mehrere Methoden zur Verwendung der Funktion round in C erläutert.

Verwenden Sie die Funktion round, um Fließkommazahlen auf die nächste Ganzzahl zu runden und eine Fließkommazahl zurückzugeben

Die Funktion round ist Teil der C-Standardbibliothek math utilities, die in der Header-Datei <math.h> definiert ist. Es gibt drei Funktionen in dieser Familie - round, roundf und roundl. Diese Funktionen sind für verschiedene Typen von Fließkommazahlen, und jede gibt den entsprechenden Typwert zurück. Beachten Sie, dass die Quelldateien, einschließlich des math-Headers, mit dem -lm-Flag kompiliert werden müssen, um den Bibliothekscode zu linken. Im folgenden Beispielcode demonstrieren wir die Konvertierungen für mehrere float-Literalwerte und geben die Ergebnisse auf der Konsole aus. Beachten Sie, dass round im Wesentlichen von der Null weg rundet. Wenn ein ganzzahliger Wert, -0, +0, NaN oder INFINITY als Argument übergeben wird, wird der gleiche Wert zurückgegeben.

#include <fenv.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

int main(void) {
  printf("round(+2.3) = %+.1f\n", round(2.3));
  printf("round(+2.5) = %+.1f\n", round(2.5));
  printf("round(+2.7) = %+.1f\n", round(2.7));
  printf("round(-2.3) = %+.1f\n", round(-2.3));
  printf("round(-2.5) = %+.1f\n", round(-2.5));
  printf("round(-2.7) = %+.1f\n", round(-2.7));

  exit(EXIT_SUCCESS);
}

Ausgabe:

round(+2.3) = +2.0
round(+2.5) = +3.0
round(+2.7) = +3.0
round(-2.3) = -2.0
round(-2.5) = -3.0
round(-2.7) = -3.0

Verwenden Sie die Funktion lround, um eine Fließkommazahl auf die nächste Ganzzahl zu runden und einen Integralwert zurückzugeben

Die Funktion lround hingegen rundet auf die nächstliegende Ganzzahl und gibt den ganzzahligen Wert zurück. Es gibt sechs Funktionen in dieser Familie, von denen die Hälfte long int als gerundeten Wert zurückgibt und andere - long long int. lround rundet ähnlich wie die round-Familie die halbwegs reellen Zahlen von Null weg.

#include <fenv.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

int main(void) {
  printf("lround(+2.3) = %ld\n", lround(2.3));
  printf("lround(+2.5) = %ld\n", lround(2.5));
  printf("lround(+2.7) = %ld\n", lround(2.7));
  printf("lround(-2.3) = %ld\n", lround(-2.3));
  printf("lround(-2.5) = %ld\n", lround(-2.5));
  printf("lround(-2.7) = %ld\n", lround(-2.7));

  exit(EXIT_SUCCESS);
}

Ausgabe:

lround(+2.3) = 2
lround(+2.5) = 3
lround(+2.7) = 3
lround(-2.3) = -2
lround(-2.5) = -3
lround(-2.7) = -3

Verwenden Sie die Funktion ceil, um Fließkommazahlen auf den kleinsten ganzzahligen Wert zu runden, der nicht kleiner ist als das Argument

Alternativ kann die Funktion ceil verwendet werden, um die gegebene Fließkommazahl auf den kleinsten ganzzahligen Wert zu runden, der nicht kleiner als das Argument selbst ist. Ähnlich wie bei der Funktion round gibt es auch in dieser Familie drei Funktionen - ceil, ceilf und ceill, die jeweils für die Typen float, double und long double verwendet werden. Beachten Sie, dass wir das +-Zeichen in die SpezifizierungsZeichenkette prinf einfügen, und es werden automatisch die entsprechenden Vorzeichen für die gerundeten Argumente angezeigt.

#include <fenv.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

int main(void) {
  printf("ceil(+2.3) = %+.1f\n", ceil(2.3));
  printf("ceil(+2.5) = %+.1f\n", ceil(2.5));
  printf("ceil(+2.7) = %+.1f\n", ceil(2.7));
  printf("ceil(-2.3) = %+.1f\n", ceil(-2.3));
  printf("ceil(-2.5) = %+.1f\n", ceil(-2.5));
  printf("ceil(-2.7) = %+.1f\n", ceil(-2.7));

  exit(EXIT_SUCCESS);
}

Ausgabe:

ceil(+2.3) = 3.000000
ceil(+2.5) = 3.000000
ceil(+2.7) = 3.000000
ceil(-2.3) = -2.000000
ceil(-2.5) = -2.000000
ceil(-2.7) = -2.000000
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Verwandter Artikel - C Math