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ée
  • pow: calculer la puissance
  • sin、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 <iostream>
#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 <iostream>
#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++.

autres extensions