C++에서 PI 상수를 사용하는 방법

Jinku Hu 2023년10월12일
  1. GNU C 라이브러리에서M_PI 매크로 사용
  2. C++ 20에서std::numbers::pi 상수 사용
  3. 소유 PI 상수 변수 선언
C++에서 PI 상수를 사용하는 방법

이 기사에서는 C++에서 PI 상수 값을 선언하고 사용하는 다양한 방법을 소개합니다.

GNU C 라이브러리에서M_PI 매크로 사용

C 표준 수학 라이브러리에서 미리 정의 된 매크로 표현식을 사용합니다. 라이브러리는 다음 표에 나열된 여러 일반 수학 상수를 정의합니다. M_PI 매크로는 부동 소수점 변수에 할당하거나 계산에서 리터럴 값으로 사용할 수 있습니다. 출력 번호가 표시되는 정밀도를 제어하는 ​​데 사용할 수있는setprecision 조작자 함수를 사용하고 있습니다.

일정한 정의
M_E 자연 로그의 밑
M_LOG2E M_E의 밑이 2 인 로그
M_LOG10E M_E의 밑이 10 인 로그
M_LN2 2의 자연 로그
M_LN10 10의 자연 로그
M_PI 파이, 원주와 지름의 비율
M_PI_2 파이를 2로 나눈 값
M_PI_4 파이를 4로 나눈 값
M_1_PI 파이의 역수 (1/pi)
M_2_PI 파이의 두 배
M_2_SQRTPI 파이 제곱근의 역수 2 배
M_SQRT2 2의 제곱근
M_SQRT1_2 2의 제곱근의 역수 (또한 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;
}

출력:

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

C++ 20에서std::numbers::pi 상수 사용

C++ 20 표준부터이 언어는<numbers>헤더에 정의 된 수학 상수를 지원합니다. 이 상수는 더 나은 크로스 플랫폼 컴플라이언스를 제공해야하지만 아직 초기 단계이며 다양한 컴파일러가 아직이를 지원하지 않을 수 있습니다. 상수의 전체 목록은 여기에서 확인할 수 있습니다.

#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

소유 PI 상수 변수 선언

또는 필요에 따라 PI 값 또는 기타 수학 상수를 사용하여 사용자 지정 상수 변수를 선언 할 수 있습니다. 매크로 표현식이나 변수에 대한 constexpr지정자를 사용하여 달성 할 수 있습니다. 다음 샘플 코드는 두 가지 방법의 사용을 보여줍니다.

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

관련 문장 - C++ Math