Como usar uma constante PI em C++

Jinku Hu 12 outubro 2023
  1. Utilizar M_PI Macro da Biblioteca C GNU
  2. Utilizar std::numbers::pi Constante de C++20
  3. Declare que você é proprietário da variável constante PI
Como usar uma constante PI em C++

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

Artigo relacionado - C++ Math