C++ で PI 定数を使用する方法
胡金庫
2023年10月12日
この記事では、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 / π) |
M_2_PI |
円周率の逆数の 2 倍 |
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
std::numbers::pi
定数を C++ 20 から使用
C++20 標準以降、この言語は <numbers>
ヘッダで定義された数学定数をサポートしています。これらの定数は、より良いクロスプラットフォーム対応を提供することになっていますが、まだ初期の段階であり、様々なコンパイラがまだサポートしていないかもしれません。定数の完全なリストは here で見ることができます。
#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;
}
著者: 胡金庫