Cómo usar una constante PI en C++
-
Usar la macro
M_PIde la biblioteca de C de GNU -
Usa la constante
std::numbers::pide 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