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