Usa una costante PI in C++
-
Usa la macro
M_PIdalla libreria GNU C++ -
Usa la costante
std::numbers::pida 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