Cómo usar una constante PI en C++
-
Usar la macro
M_PI
de la biblioteca de C de GNU -
Usa la constante
std::numbers::pi
de C++20 - Declare que posee la constante PI Variable
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;
}
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