Namespaces
Variants

Floating-point environment (since C++11)

From cppreference.net
Floating-point environment
Functions
(C++11) (C++11)
(C++11) (C++11)
Macro constants
(C++11)

El entorno de punto flotante es el conjunto de banderas de estado de punto flotante y modos de control soportados por la implementación. Es local al hilo. Cada hilo hereda el estado inicial de su entorno de punto flotante del hilo padre. Las operaciones de punto flotante modifican las banderas de estado de punto flotante para indicar resultados anormales o información auxiliar. El estado de los modos de control de punto flotante afecta los resultados de algunas operaciones de punto flotante.

El acceso y modificación del entorno de punto flotante solo tiene sentido cuando #pragma STDC FENV_ACCESS es compatible y está establecido en ON . De lo contrario, la implementación puede asumir que los modos de control de punto flotante son siempre los predeterminados y que las banderas de estado de punto flotante nunca se prueban o modifican. En la práctica, pocos compiladores actuales, como HP aCC, Oracle Studio o IBM XL, admiten el #pragma explícitamente, pero la mayoría de los compiladores permiten un acceso significativo al entorno de punto flotante de todos modos.

Contenidos

Tipos

Definido en el encabezado <cfenv>
fenv_t
(C++11)
el tipo que representa todo el entorno de punto flotante
(typedef)
fexcept_t
(C++11)
el tipo que representa todas las banderas de estado de punto flotante colectivamente
(typedef)

Funciones

borra las banderas de estado de punto flotante especificadas
(función)
determina cuáles de las banderas de estado de punto flotante especificadas están activadas
(función)
genera las excepciones de punto flotante especificadas
(función)
copia el estado de las banderas de estado de punto flotante especificadas desde o hacia el entorno de punto flotante
(función)
(C++11) (C++11)
obtiene o establece la dirección de redondeo
(función)
guarda o restaura el entorno actual de punto flotante
(función)
guarda el entorno, borra todas las banderas de estado e ignora todos los errores futuros
(función)
restaura el entorno de punto flotante y genera las excepciones previamente activadas
(función)

Macros

excepciones de punto flotante
(constante macro)
dirección de redondeo de punto flotante
(constante macro)
(C++11)
entorno de punto flotante predeterminado
(constante macro)

Notas

Las excepciones de punto flotante no están relacionadas con las excepciones de C++. Cuando una operación de punto flotante genera una excepción de punto flotante, el estado del entorno de punto flotante cambia, lo cual puede verificarse con std::fetestexcept , pero la ejecución de un programa C++ en la mayoría de las implementaciones continúa sin interrupción.

Existen extensiones del compilador que pueden utilizarse para generar excepciones de C++ automáticamente cada vez que se produce una excepción de punto flotante:

  • La función de GNU libc feenableexcept() habilita la captura de excepciones de punto flotante, lo que genera la señal SIGFPE . Si se utilizó la opción del compilador -fnon-call-exceptions , el manejador para esa señal puede lanzar una excepción de C++ definida por el usuario.
  • La función de MSVC _control87() habilita la captura de excepciones de punto flotante, lo que genera una excepción de hardware, que puede convertirse a excepciones de C++ con _set_se_translator .

Véase también

Documentación de C para Entorno de punto flotante