Comprobación del estándar de punto flotante IEEE 754 en C
La determinación de si un compilador de C cumple con el estándar de punto flotante IEEE 754 normalmente se logra mediante un compilador define. Sin embargo, es posible que la técnica utilizada para C no se aplique directamente a C.
C -Enfoque específico
Afortunadamente, C ofrece un método sencillo para realizar esta verificación utilizando los límites numéricos. clase:
std::numeric_limits::is_iec559;
Esto La expresión se evalúa como verdadera si el compilador utiliza IEEE 754 y como falsa en caso contrario. Se puede realizar una verificación similar para el tipo flotante:
std::numeric_limits::is_iec559;
Método alternativo
Como alternativa al enfoque de límites_numéricos, puede adaptar la segunda parte de la respuesta de Adam para C :
#include
int main() {
// Check for IEEE 754 compliance by checking for a finite number of float exponents.
if (std::numeric_limits::max_exponent == std::numeric_limits::max()) {
// Compiler uses IEEE 754.
} else {
// Compiler does not use IEEE 754.
}
}
Este enfoque se basa en el hecho de que IEEE 754 define un rango específico de exponentes para números de punto flotante. Si el exponente máximo del compilador coincide con el tamaño máximo de un número entero, es probable que cumpla con IEEE 754.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3