Comment utiliser une constante PI en C++

Jinku Hu 12 octobre 2023
  1. Utiliser la macro M_PI de la bibliothèque C de GNU
  2. Utiliser la constante std::numbers::pi à partir de C++20
  3. Déclarez que vous possédez une variable constante PI
Comment utiliser une constante PI en C++

Cet article présente les différentes façons de déclarer et d’utiliser la valeur constante de l’IP en C++.

Utiliser la macro M_PI de la bibliothèque C de GNU

Il utilise une expression macro prédéfinie de la bibliothèque mathématique standard C. La bibliothèque définit de multiples constantes mathématiques communes, qui sont énumérées dans le tableau suivant. La macro M_PI peut être assignée à une variable à virgule float ou utilisée comme valeur littérale dans les calculs. Notez que nous utilisons la fonction de manipulation setprecision, qui peut être utilisée pour contrôler la précision avec laquelle le nombre de sortie est affiché.

Constante Définition
M_E La base des logarithmes naturels
M_LOG2E Le logarithme en base 2 de M_E
M_LOG10E Le logarithme de la base 10 de M_E
M_LN2 Le logarithme naturel de 2
M_LN10 Le logarithme naturel de 10
M_PI Pi, le rapport entre la circonférence d’un cercle et son diamètre
M_PI_2 Pi divisé par deux
M_PI_4 Pi divisé par quatre
M_1_PI La réciproque de pi (1/pi)
M_2_PI Deux fois la réciproque de pi
M_2_SQRTPI Deux fois la réciproque de la racine carrée de pi
M_SQRT2 La racine carrée de deux
M_SQRT1_2 La réciproque de la racine carrée de deux (également la racine carrée de 1/2)
#include <cmath>
#include <iomanip>
#include <iostream>

using std::cout;
using std::endl;

int main() {
  double pi1 = M_PI;
  cout << "pi = " << std::setprecision(16) << M_PI << endl;
  cout << "pi * 2 = " << std::setprecision(16) << pi1 * 2 << endl;
  cout << "M_PI * 2 = " << std::setprecision(16) << M_PI * 2 << endl;

  cout << endl;
  return EXIT_SUCCESS;
}

Production:

pi = 3.141592653589793
pi * 2 = 6.283185307179586
M_PI * 2 = 6.283185307179586

Utiliser la constante std::numbers::pi à partir de C++20

Depuis la norme C++20, le langage supporte les constantes mathématiques définies dans l’en-tête <numbers>. Ces constantes sont censées offrir une meilleure compatibilité entre les plates-formes, mais cela n’en est qu’à ses débuts, et il se peut que divers compilateurs ne le prennent pas encore en charge. La liste complète des constantes peut être consultée ici.

#include <iomanip>
#include <iostream>
#include <numbers>

using std::cout;
using std::endl;

int main() {
  cout << "pi = " << std::setprecision(16) << std::numbers::pi << endl;
  cout << "pi * 2 = " << std::setprecision(16) << std::numbers::pi * 2 << endl;

  cout << endl;
  return EXIT_SUCCESS;
}
pi = 3.141592653589793
pi * 2 = 6.283185307179586

Déclarez que vous possédez une variable constante PI

On peut aussi déclarer une variable constante personnalisée avec une valeur PI ou toute autre constante mathématique selon les besoins. Cela peut être réalisé soit en utilisant une macro expression, soit en utilisant le spécificateur constexpr pour une variable. L’exemple de code suivant démontre l’utilisation des deux méthodes.

#include <iomanip>
#include <iostream>

using std::cout;
using std::endl;

#define MY_PI 3.14159265358979323846
constexpr double my_pi = 3.141592653589793238462643383279502884L;

int main() {
  cout << std::setprecision(16) << MY_PI << endl;
  cout << std::setprecision(16) << my_pi << endl;

  return EXIT_SUCCESS;
}
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - C++ Math