fegetround, fesetround
|
Definido en el encabezado
<fenv.h>
|
||
|
int
fesetround
(
int
round
)
;
|
(1) | (desde C99) |
|
int
fegetround
(
)
;
|
(2) | (desde C99) |
1) Intenta establecer la dirección de redondeo de punto flotante igual al argumento round , que se espera que sea una de las macros de redondeo de punto flotante .
2) Retorna el valor de la macro de redondeo de punto flotante que corresponde a la dirección de redondeo actual.
Contenidos |
Parámetros
| round | - | dirección de redondeo, una de macros de redondeo de punto flotante |
Valor de retorno
1) 0 en caso de éxito, distinto de cero en caso contrario.
2) la macro de redondeo de punto flotante que describe la dirección de redondeo actual o un valor negativo si la dirección no puede determinarse.
Notas
El modo de redondeo actual, que refleja los efectos del más reciente
fesetround
, también puede consultarse con
FLT_ROUNDS
.
Ejemplo
#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) { /* Dirección de redondeo por defecto */ show_fe_current_rounding_direction(); printf("+11.5 -> %+4.1f\n", rint(+11.5)); /* punto medio entre dos enteros */ printf("+12.5 -> %+4.1f\n", rint(+12.5)); /* punto medio entre dos enteros */ /* Guardar la dirección de redondeo actual. */ int curr_direction = fegetround(); /* Cambiar temporalmente la dirección de redondeo actual. */ 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)); /* Restaurar la dirección de redondeo por defecto. */ fesetround(curr_direction); show_fe_current_rounding_direction(); return 0; }
Salida posible:
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
Referencias
- Estándar C23 (ISO/IEC 9899:2024):
-
- 7.6.3.1 La función fegetround (p: TBD)
-
- 7.6.3.2 La función fesetround (p: TBD)
- Estándar C17 (ISO/IEC 9899:2018):
-
- 7.6.3.1 La función fegetround (p: TBD)
-
- 7.6.3.2 La función fesetround (p: TBD)
- Estándar C11 (ISO/IEC 9899:2011):
-
- 7.6.3.1 La función fegetround (p: 212)
-
- 7.6.3.2 La función fesetround (p: 212-213)
- Estándar C99 (ISO/IEC 9899:1999):
-
- 7.6.3.1 La función fegetround (p: 193)
-
- 7.6.3.2 La función fesetround (p: 193-194)
Véase también
|
(C99)
(C99)
(C99)
|
redondea a un entero usando el modo de redondeo actual
(función) |
|
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
|
redondea a un entero usando el modo de redondeo actual con
excepción si el resultado difiere (función) |
|
C++ documentation
para
fegetround
,
fesetround
|
|