fegetround, fesetround
|
Défini dans l'en-tête
<fenv.h>
|
||
|
int
fesetround
(
int
round
)
;
|
(1) | (depuis C99) |
|
int
fegetround
(
)
;
|
(2) | (depuis C99) |
1) Tente d'établir la direction d'arrondi en virgule flottante égale à l'argument round , qui est censé être l'une des macros d'arrondi en virgule flottante .
2) Retourne la valeur de la macro d'arrondi en virgule flottante qui correspond à la direction d'arrondi actuelle.
Table des matières |
Paramètres
| round | - | direction d'arrondi, l'une des macros d'arrondi en virgule flottante |
Valeur de retour
1) 0 en cas de succès, valeur non nulle sinon.
2) la macro d'arrondi en virgule flottante décrivant la direction d'arrondi actuelle ou une valeur négative si la direction ne peut pas être déterminée.
Notes
Le mode d'arrondi actuel, reflétant les effets du plus récent
fesetround
, peut également être consulté avec
FLT_ROUNDS
.
Exemple
#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) { /* Direction d'arrondi par défaut */ show_fe_current_rounding_direction(); printf("+11.5 -> %+4.1f\n", rint(+11.5)); /* à mi-chemin entre deux entiers */ printf("+12.5 -> %+4.1f\n", rint(+12.5)); /* à mi-chemin entre deux entiers */ /* Sauvegarder la direction d'arrondi actuelle. */ int curr_direction = fegetround(); /* Modifier temporairement la direction d'arrondi actuelle. */ 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)); /* Restaurer la direction d'arrondi par défaut. */ fesetround(curr_direction); show_fe_current_rounding_direction(); return 0; }
Sortie possible :
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
Références
- Norme C23 (ISO/CEI 9899:2024) :
-
- 7.6.3.1 La fonction fegetround (p: TBD)
-
- 7.6.3.2 La fonction fesetround (p: TBD)
- Norme C17 (ISO/CEI 9899:2018) :
-
- 7.6.3.1 La fonction fegetround (p: TBD)
-
- 7.6.3.2 La fonction fesetround (p: TBD)
- Norme C11 (ISO/IEC 9899:2011) :
-
- 7.6.3.1 La fonction fegetround (p: 212)
-
- 7.6.3.2 La fonction fesetround (p: 212-213)
- Norme C99 (ISO/CEI 9899:1999) :
-
- 7.6.3.1 La fonction fegetround (p : 193)
-
- 7.6.3.2 La fonction fesetround (p : 193-194)
Voir aussi
|
(C99)
(C99)
(C99)
|
arrondit à un entier en utilisant le mode d'arrondi actuel
(fonction) |
|
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
|
arrondit à un entier en utilisant le mode d'arrondi actuel avec
exception si le résultat diffère (fonction) |
|
Documentation C++
pour
fegetround
,
fesetround
|
|