Le module <cfloat> de la bibliothèque standard C++.
<cfloat>est un fichier d'en-tête de la bibliothèque standard C++, utilisé pour définir des macros et des constantes liées aux nombres à virgule flottante. Ces macros et constantes fournissent des informations telles que la précision et la plage de représentation en virgule flottante, principalement issues de la bibliothèque standard C<float.h>Fichier d'en-tête.
Bases des nombres à virgule flottante
En C++, un nombre à virgule flottante est un type de données utilisé pour représenter des nombres décimaux. C++ fournit deux types de base à virgule flottante :
float: nombre à virgule flottante en simple précision, occupant généralement 4 bytes.double: nombre à virgule flottante en double précision, occupant généralement 8 bytes.
Définition et syntaxe
En C++, vous pouvez utiliserfloatoudoublepour définir des variables à virgule flottante. Par exemple :
float f = 3.14f; // 使用 f 后缀表示浮点数字面量 double d = 2.718;
Opérations en virgule flottante dans la bibliothèque standard
Bien que la bibliothèque standard C++ ne dispose pas d'un module "cfloat" dédié,<cmath>le fichier d'en-tête fournit de nombreuses fonctions pour les opérations en virgule flottante, telles que :
sqrtCalculer la racine carréepow: calculer la puissancesin、cos、tanCalculer les fonctions trigonométriques
<cfloat>Constantes fournies
1. Plage des nombres à virgule flottante
FLT_MIN:floatLe plus petit nombre positif du type.FLT_MAX:floatLe plus grand nombre positif du type.DBL_MIN:doubleLe plus petit nombre positif du type.DBL_MAX:doubleLe plus grand nombre positif du type.LDBL_MIN:long doubleLe plus petit nombre positif du type.LDBL_MAX:long doubleLe plus grand nombre positif du type.
2. Précision en virgule flottante
FLT_DIG:floatLe nombre de chiffres significatifs du type.DBL_DIG:doubleLe nombre de chiffres significatifs du type.LDBL_DIG:long doubleLe nombre de chiffres significatifs du type.
3. Exposant négatif minimum
FLT_MIN_EXP:floatLe plus petit exposant négatif du type.DBL_MIN_EXP:doubleLe plus petit exposant négatif du type.LDBL_MIN_EXP:long doubleLe plus petit exposant négatif du type.
4. Exposant positif maximum
FLT_MAX_EXP:floatLe plus grand exposant positif du type.DBL_MAX_EXP:doubleLe plus grand exposant positif du type.LDBL_MAX_EXP:long doubleLe plus grand exposant positif du type.
5. Epsilon machine
FLT_EPSILON:floatl'epsilon machine d'un type, représentant le plus petit nombre à virgule flottante qui peut être distingué de 1.0 et qui est supérieur à 1.0.DBL_EPSILON:doubleL'epsilon machine du type.LDBL_EPSILON:long doubleL'epsilon machine du type.
Exemple
L'exemple suivant montre comment utiliser<cfloat>Constantes fournies :
Exemple
#include <cfloat>
int main() {
// affiche la plage et la précision du type 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 << "Chiffres : " << FLT_DIG << '\n';
// afficher la plage et la précision du type 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 << "Chiffres : " << DBL_DIG << '\n';
// afficher la plage et la précision du type 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 << "Chiffres : " << LDBL_DIG << '\n';
return 0;
}
Sortie :
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
Voici un exemple utilisant<cmath>fonctions dans le fichier d'en-tête pour opérer sur les nombres à virgule flottante dans un programme C++ :
Exemple
#include <cmath> // inclut les fonctions mathématiques
int main() {
double num = 9.0;
double root = sqrt(num); // calculer la racine carrée
double power = pow(2.0, 3.0); // calculer 2 à la puissance 3
std::cout << "La racine carrée de " << num << " est " << root << std::endl;
std::cout << "La puissance de 2 à 3 est " << power << std::endl;
return 0;
}
Sortie :
The square root of 9 is 3 The power of 2 to the 3 is 8
Notes
- La précision des nombres à virgule flottante est limitée, donc des problèmes de précision peuvent être rencontrés lors de l'exécution d'opérations arithmétiques en virgule flottante.
- Lors de la comparaison de deux nombres à virgule flottante pour vérifier s'ils sont égaux, une petite tolérance d'erreur doit être utilisée pour le jugement, plutôt que d'utiliser directement
==operator.
Bien que "cfloat" ne fasse pas partie de la bibliothèque standard C++, C++ fournit une prise en charge puissante des nombres à virgule flottante et des bibliothèques de fonctions mathématiques associées. En utilisant<cmath>fichier d'en-tête, vous pouvez effectuer commodément diverses opérations sur les nombres à virgule flottante. J'espère que cet article aidera les débutants à mieux comprendre les opérations en virgule flottante en C++.