Comment utiliser une constante PI en C++
-
Utiliser la macro
M_PI
de la bibliothèque C de GNU -
Utiliser la constante
std::numbers::pi
à partir de C++20 - Déclarez que vous possédez une variable constante PI
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;
}
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