Usa una costante PI in C++

Jinku Hu 12 ottobre 2023
  1. Usa la macro M_PI dalla libreria GNU C++
  2. Usa la costante std::numbers::pi da C++ 20
  3. Dichiara di essere il proprietario della variabile costante PI
Usa una costante PI in C++

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;
}
Autore: 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

Articolo correlato - C++ Math