Cómo usar una constante PI en C++

Jinku Hu 12 octubre 2023
  1. Usar la macro M_PI de la biblioteca de C de GNU
  2. Usa la constante std::numbers::pi de C++20
  3. Declare que posee la constante PI Variable
Cómo usar una constante PI en C++

Este artículo presentará diferentes formas de declarar y utilizar el valor de la constante PI en C++.

Usar la macro M_PI de la biblioteca de C de GNU

Utiliza una macroexpresión predefinida de la biblioteca matemática estándar de C. La biblioteca define múltiples constantes matemáticas comunes, que se enumeran en la siguiente tabla. El macro M_PI puede ser asignado a una variable de punto flotante o usado como un valor literal en los cálculos. Note que estamos usando la función manipuladora setprecision, que puede ser usada para controlar la precisión con la que se muestra el número de salida.

Constante Definición
M_E La base de los logaritmos naturales
M_LOG2E El logaritmo de la base 2 de M_E
M_LOG10E El logaritmo a la base 10 de M_E
M_LN2 El logaritmo natural de 2
M_LN10 El logaritmo natural de 10
M_PI Pi, la relación entre la circunferencia de un círculo y su diámetro
M_PI_2 Pi dividido por dos
M_PI_4 Pi dividido por cuatro
M_1_PI El recíproco de pi (1/pi)
M_2_PI El doble de la recíproca de pi
M_2_SQRTPI Dos veces la recíproca de la raíz cuadrada de pi
M_SQRT2 La raíz cuadrada de dos
M_SQRT1_2 El recíproco de la raíz cuadrada de dos (también la raíz cuadrada 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;
}

Resultado:

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

Usa la constante std::numbers::pi de C++20

Desde el estándar C++20, el lenguaje soporta las constantes matemáticas definidas en la cabecera <numbers>. Se supone que estas constantes ofrecen un mejor cumplimiento multiplataforma, pero todavía está en los primeros días, y varios compiladores podrían no soportarlo todavía. La lista completa de las constantes se puede ver aquí.

#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

Declare que posee la constante PI Variable

Alternativamente, se puede declarar una variable constante personalizada con el valor de PI o cualquier otra constante matemática según sea necesario. Se puede lograr usando una macro expresión o el especificador constexpr para una variable. El siguiente código de muestra demuestra el uso de ambos métodos.

#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;
}
Autor: 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

Artículo relacionado - C++ Math