El módulo <cfloat> de la biblioteca estándar de C++
<cfloat>es un archivo de cabecera de la biblioteca estándar de C++ que se utiliza para definir macros y constantes relacionadas con los números de punto flotante. Estas macros y constantes proporcionan información sobre la precisión, el rango, etc., de la representación de los números de punto flotante, principalmente de la biblioteca estándar de C<float.h>archivo de cabecera.
Fundamentos de los números de punto flotante
En C++, los números de punto flotante son un tipo de datos utilizado para representar números decimales. C++ proporciona dos tipos básicos de números de punto flotante:
float: número de punto flotante de precisión simple, normalmente ocupa 4 bytes.double: número de punto flotante de doble precisión, normalmente ocupa 8 bytes.
Definición y sintaxis
En C++, puedes usarfloatodoublepara definir variables de punto flotante. Por ejemplo:
float f = 3.14f; // 使用 f 后缀表示浮点数字面量 double d = 2.718;
Operaciones de punto flotante en la biblioteca estándar
Aunque la biblioteca estándar de C++ no tiene un módulo específico "cfloat"<cmath>el archivo de cabecera proporciona muchas funciones para operaciones de punto flotante, por ejemplo:
sqrt: calcula la raíz cuadradapow: calcula la potenciasin、cos、tan: calcula funciones trigonométricas
<cfloat>Constantes proporcionadas
1. Rango de los números de punto flotante
FLT_MIN:floatEl número positivo más pequeño del tipo.FLT_MAX:floatEl número positivo más grande del tipo.DBL_MIN:doubleEl número positivo más pequeño del tipo.DBL_MAX:doubleEl número positivo más grande del tipo.LDBL_MIN:long doubleEl número positivo más pequeño del tipo.LDBL_MAX:long doubleEl número positivo más grande del tipo.
2. Precisión de los números de punto flotante
FLT_DIG:floatEl número de dígitos significativos del tipo.DBL_DIG:doubleEl número de dígitos significativos del tipo.LDBL_DIG:long doubleEl número de dígitos significativos del tipo.
3. Exponente negativo mínimo
FLT_MIN_EXP:floatEl exponente negativo mínimo del tipo.DBL_MIN_EXP:doubleEl exponente negativo mínimo del tipo.LDBL_MIN_EXP:long doubleEl exponente negativo mínimo del tipo.
4. Exponente positivo máximo
FLT_MAX_EXP:floatEl exponente positivo máximo del tipo.DBL_MAX_EXP:doubleEl exponente positivo máximo del tipo.LDBL_MAX_EXP:long doubleEl exponente positivo máximo del tipo.
5. Épsilon de la máquina
FLT_EPSILON:floatEl épsilon de la máquina del tipo, que representa el número de punto flotante más pequeño que puede distinguir 1.0 de un número mayor que 1.0.DBL_EPSILON:doubleEl épsilon de la máquina del tipo.LDBL_EPSILON:long doubleEl épsilon de la máquina del tipo.
Ejemplo
El siguiente ejemplo muestra cómo usar en un programa C++<cfloat>las constantes proporcionadas:
Ejemplo
#include <cfloat>
int main() {
// Muestra el rango y la precisión del tipo float
std::cout << "float:\n";
std::cout << "Min: " << FLT_MIN << '\n';
std::cout << "Max: " << FLT_MAX << '\n';
std::cout << "Epsilon: " << FLT_EPSILON << '\n';
std::cout << "Digits: " << FLT_DIG << '\n';
// Muestra el rango y la precisión del tipo double
std::cout << "\ndouble:\n";
std::cout << "Min: " << DBL_MIN << '\n';
std::cout << "Max: " << DBL_MAX << '\n';
std::cout << "Epsilon: " << DBL_EPSILON << '\n';
std::cout << "Digits: " << DBL_DIG << '\n';
// Muestra el rango y la precisión del tipo long double
std::cout << "\nlong double:\n";
std::cout << "Min: " << LDBL_MIN << '\n';
std::cout << "Max: " << LDBL_MAX << '\n';
std::cout << "Epsilon: " << LDBL_EPSILON << '\n';
std::cout << "Digits: " << LDBL_DIG << '\n';
return 0;
}
Salida:
float: Min: 1.17549e-38 Max: 3.40282e+38 Epsilon: 1.19209e-07 Digits: 6 double: Min: 2.22507e-308 Max: 1.79769e+308 Epsilon: 2.22045e-16 Digits: 15 long double: Min: 2.22507e-308 Max: 1.79769e+308 Epsilon: 2.22045e-16 Digits: 15
A continuación se muestra<cmath>un ejemplo sencillo del uso de las funciones del archivo de cabecera para operar con números de punto flotante:
Ejemplo
#include <cmath> // Incluye funciones matemáticas
int main() {
double num = 9.0;
double root = sqrt(num); // Calcula la raíz cuadrada
double power = pow(2.0, 3.0); // Calcula 2 elevado a la 3
std::cout << "The square root of " << num << " is " << root << std::endl;
std::cout << "The power of 2 to the 3 is " << power << std::endl;
return 0;
}
Salida:
The square root of 9 is 3 The power of 2 to the 3 is 8
Precauciones
- La precisión de los números de punto flotante es limitada, por lo que al realizar operaciones con números de punto flotante pueden surgir problemas de precisión.
- Al comparar si dos números de punto flotante son iguales, se debe usar un pequeño margen de error para decidir, en lugar de usar directamente
==el operador.
Aunque "cfloat" no es parte de la biblioteca estándar de C++, C++ ofrece un sólido soporte para números de punto flotante y una biblioteca de funciones matemáticas relacionada. Mediante el uso de<cmath>el archivo de cabecera, puedes realizar fácilmente diversas operaciones con números de punto flotante. Espero que este artículo ayude a los principiantes a comprender mejor las operaciones de punto flotante en C++.