Como usar uma constante PI em C++
-
Utilizar
M_PI
Macro da Biblioteca C GNU -
Utilizar
std::numbers::pi
Constante de C++20 - Declare que você é proprietário da variável constante PI
Este artigo apresentará diferentes maneiras de declarar e usar o valor constante PI em C++.
Utilizar M_PI
Macro da Biblioteca C GNU
Ela usa a expressão macro predefinida da biblioteca de matemática padrão C. A biblioteca define várias constantes matemáticas comuns, que estão listadas na tabela a seguir. A macro M_PI
pode ser atribuída a uma variável de ponto flutuante ou utilizada como um valor literal nos cálculos. Observe que estamos utilizando a função manipuladora de setprecision
, que pode ser utilizada para controlar a precisão com a qual o número de saída é exibido.
Constante | Definição |
---|---|
M_E |
A base dos logaritmos naturais |
M_LOG2E |
O logaritmo para a base 2 de M_E |
M_LOG10E |
O logaritmo para a base 10 de M_E |
M_LN2 |
O logaritmo natural de 2 |
M_LN10 |
O logaritmo natural de 10 |
M_PI |
Pi, a relação entre a circunferência de um círculo e seu diâmetro |
M_PI_2 |
Pi dividido por dois |
M_PI_4 |
Pi dividido por quatro |
M_1_PI |
O recíproco de pi (1/pi) |
M_2_PI |
Duas vezes o recíproco de pi |
M_2_SQRTPI |
Duas vezes o recíproco da raiz quadrada de pi |
M_SQRT2 |
A raiz quadrada de dois |
M_SQRT1_2 |
O recíproco da raiz quadrada de dois (também a raiz quadrada 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
Utilizar std::numbers::pi
Constante de C++20
Desde o padrão C++20, a linguagem suporta as constantes matemáticas definidas no cabeçalho <numbers>
. Estas constantes devem oferecer uma melhor conformidade entre plataformas, mas ainda está nos primórdios, e vários compiladores podem ainda não suportar isso. A lista completa das constantes pode ser vista aqui.
#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 você é proprietário da variável constante PI
Alternativamente, pode-se declarar uma variável constante personalizada com valor PI ou qualquer outra constante matemática, conforme a necessidade. Ela pode ser obtida utilizando uma expressão macro ou o especificador constexpr
para uma variável. O código de amostra a seguir demonstra o uso de ambos os 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