Usa una costante PI in C++
-
Usa la macro
M_PI
dalla libreria GNU C++ -
Usa la costante
std::numbers::pi
da C++ 20 - Dichiara di essere il proprietario della variabile costante PI
Questo articolo introdurrà diversi modi per dichiarare e utilizzare il valore della costante PI in C++.
Usa la macro M_PI
dalla libreria GNU C++
Utilizza un’espressione macro predefinita dalla libreria matematica standard C. La libreria definisce più costanti matematiche comuni, elencate nella tabella seguente. La macro M_PI
può essere assegnata a una variabile in virgola mobile o utilizzata come valore letterale nei calcoli. Si noti che stiamo usando la funzione di manipolazione setprecision
, che può essere utilizzata per controllare la precisione con cui viene visualizzato il numero di output.
Costante | Definizione |
---|---|
M_E |
La base dei logaritmi naturali |
M_LOG2E |
Il logaritmo in base 2 di M_E |
M_LOG10E |
Il logaritmo in base 10 di M_E |
M_LN2 |
Il logaritmo naturale di 2 |
M_LN10 |
Il logaritmo naturale di 10 |
M_PI |
Pi, il rapporto tra la circonferenza di un cerchio e il suo diametro |
M_PI_2 |
Pi diviso per due |
M_PI_4 |
Pi diviso per quattro |
M_1_PI |
Il reciproco di pi greco (1 / pi greco) |
M_2_PI |
Due volte il reciproco di pi greco |
M_2_SQRTPI |
Due volte il reciproco della radice quadrata di pi greco |
M_SQRT2 |
La radice quadrata di due |
M_SQRT1_2 |
Il reciproco della radice quadrata di due (anche la radice quadrata di 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;
}
Produzione:
pi = 3.141592653589793
pi * 2 = 6.283185307179586
M_PI * 2 = 6.283185307179586
Usa la costante std::numbers::pi
da C++ 20
A partire dallo standard C++ 20, il linguaggio supporta le costanti matematiche definite nell’intestazione <numbers>
. Queste costanti dovrebbero offrire una migliore conformità multipiattaforma, ma è ancora agli inizi e vari compilatori potrebbero non supportarla ancora. L’lista completo delle costanti può essere visto qui.
#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
Dichiara di essere il proprietario della variabile costante PI
In alternativa, possiamo dichiarare una variabile costante personalizzata con valore PI o qualsiasi altra costante matematica secondo necessità. Può essere ottenuto utilizzando un’espressione macro o l’identificatore constexpr
per una variabile. Nell’esempio di codice riportato di seguito viene illustrato l’utilizzo di entrambi i metodi.
#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