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