fegetround, fesetround
|
Definiert im Header
<fenv.h>
|
||
|
int
fesetround
(
int
round
)
;
|
(1) | (seit C99) |
|
int
fegetround
(
)
;
|
(2) | (seit C99) |
1) Versucht, die Gleitkomma-Rundungsrichtung gleich dem Argument round zu setzen, von dem erwartet wird, dass es eines der Gleitkomma-Rundungsmakros ist.
2) Gibt den Wert des Gleitkomma-Rundungsmakros zurück, das der aktuellen Rundungsrichtung entspricht.
Inhaltsverzeichnis |
Parameter
| round | - | Rundungsrichtung, eine der Gleitkomma-Rundungsmakros |
Rückgabewert
1) 0 bei Erfolg, andernfalls ungleich Null.
2) das floating-point rounding macro beschreibt die aktuelle Rundungsrichtung oder einen negativen Wert, wenn die Richtung nicht bestimmt werden kann.
Hinweise
Der aktuelle Rundungsmodus, der die Auswirkungen des zuletzt ausgeführten
fesetround
widerspiegelt, kann auch mit
FLT_ROUNDS
abgefragt werden.
Beispiel
#include <fenv.h> #include <math.h> #include <stdio.h> // #pragma STDC FENV_ACCESS ON void show_fe_current_rounding_direction(void) { printf("current rounding direction: "); switch (fegetround()) { case FE_TONEAREST: printf ("FE_TONEAREST"); break; case FE_DOWNWARD: printf ("FE_DOWNWARD"); break; case FE_UPWARD: printf ("FE_UPWARD"); break; case FE_TOWARDZERO: printf ("FE_TOWARDZERO"); break; default: printf ("unknown"); }; printf("\n"); } int main(void) { /* Standard-Rundungsrichtung */ show_fe_current_rounding_direction(); printf("+11.5 -> %+4.1f\n", rint(+11.5)); /* Mitte zwischen zwei Ganzzahlen */ printf("+12.5 -> %+4.1f\n", rint(+12.5)); /* Mitte zwischen zwei Ganzzahlen */ /* Aktuelle Rundungsrichtung speichern. */ int curr_direction = fegetround(); /* Aktuelle Rundungsrichtung temporär ändern. */ fesetround(FE_DOWNWARD); show_fe_current_rounding_direction(); printf("+11.5 -> %+4.1f\n", rint(+11.5)); printf("+12.5 -> %+4.1f\n", rint(+12.5)); /* Standard-Rundungsrichtung wiederherstellen. */ fesetround(curr_direction); show_fe_current_rounding_direction(); return 0; }
Mögliche Ausgabe:
current rounding direction: FE_TONEAREST +11.5 -> +12.0 +12.5 -> +12.0 current rounding direction: FE_DOWNWARD +11.5 -> +11.0 +12.5 -> +12.0 current rounding direction: FE_TONEAREST
Referenzen
- C23-Standard (ISO/IEC 9899:2024):
-
- 7.6.3.1 Die fegetround-Funktion (S.: TBD)
-
- 7.6.3.2 Die fesetround-Funktion (S.: TBD)
- C17-Standard (ISO/IEC 9899:2018):
-
- 7.6.3.1 Die fegetround-Funktion (S.: TBD)
-
- 7.6.3.2 Die fesetround-Funktion (S.: TBD)
- C11-Standard (ISO/IEC 9899:2011):
-
- 7.6.3.1 Die fegetround-Funktion (S: 212)
-
- 7.6.3.2 Die fesetround-Funktion (S: 212-213)
- C99-Standard (ISO/IEC 9899:1999):
-
- 7.6.3.1 Die fegetround-Funktion (S: 193)
-
- 7.6.3.2 Die fesetround-Funktion (S: 193-194)
Siehe auch
|
(C99)
(C99)
(C99)
|
rundet auf eine Ganzzahl unter Verwendung des aktuellen Rundungsmodus
(Funktion) |
|
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
|
rundet auf eine Ganzzahl unter Verwendung des aktuellen Rundungsmodus mit
Ausnahme, falls das Ergebnis abweicht (Funktion) |
|
C++-Dokumentation
für
fegetround
,
fesetround
|
|