constants — 수학 상수

constants — 수학 상수 (Mathematical constants)

**수학 상수(mathematical constants)**는 C++20의 <numbers> 헤더가 제공하는 유명한 상수들이에요. std::numbers 네임스페이스에 있어요.

각 상수는 변수 템플릿(_v)과, 기본 double 타입의 비템플릿 상수로 제공돼요.

출처: cppreference

본문

다음 상수들이 <numbers> 헤더, std::numbers 네임스페이스에 정의돼요.

상수
e_v 자연로그의 밑 e
log2e_v log₂e
log10e_v log₁₀e
pi_v 원주율 π
inv_pi_v 1/π
inv_sqrtpi_v 1/√π
ln2_v ln 2
ln10_v ln 10
sqrt2_v √2
sqrt3_v √3
inv_sqrt3_v 1/√3
egamma_v 오일러-마스케로니 상수 γ
phi_v 황금비 φ
#include <numbers>
#include <iostream>
#include <iomanip>

std::cout << std::setprecision(16);
std::cout << std::numbers::pi << '\n';       // double 기본
std::cout << std::numbers::pi_v<double> << '\n';  // double 명시
std::cout << std::numbers::pi_v<float> << '\n';   // float

사용법

_v 변수 템플릿 형태는 임의의 부동 소수점 타입으로 인스턴스화할 수 있어요.

float   e_float = std::numbers::e_v<float>;
double  pi_double = std::numbers::pi;
long double phi_ld = std::numbers::phi_v<long double>;

특징:

  • 템플릿 형태 xxx_v<T>는 부동 소수점 타입 T에 대해 가장 가까운 값으로 계산돼요.
  • 비템플릿 상수(pi, e 등)는 double 전용이에요.
  • C++20부터 사용 가능해요.
// 원의 면적
double area = std::numbers::pi * r * r;
// 확률/통계, 푸리에 변환 등에도 자주 사용

<numbers> 상수들은 원주율·자연상수 같은 값을 직접 손으로 적는 실수를 없애주고, 타입별로 정확한 값을 제공해요.

더 알아보기 (Learn more)

cppreference