如何在 C++ 中使用 PI 常数
使用 GNU C 库中的 M_PI 宏它使用 C 标准数学库中预定义的宏表达式。该库定义了多个常用的数学常量,如下表所示。M_PI 宏可以赋值给浮点变量,也可以在计算中作为文字值使用。注意,我们使用的是 setprecision 操纵器函数,它可以用来控制输出数的显示精度。
[img]http://p.algo2.net/2024/1113/c157c4db8273a.png[/img][code]#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;
}[/code]输出:
pi = 3.141592653589793
pi * 2 = 6.283185307179586
M_PI * 2 = 6.283185307179586
从 C++20 开始使用 std::numbers::pi 常数
自 C++20 标准以来,该语言支持在 <numbers> 头文件中定义的数学常量。这些常量被认为可以提供更好的跨平台兼容性,但目前仍处于早期阶段,各种编译器可能还不支持它。完整的常量列表可以在这里看到。[code]#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;
}[/code][code]pi = 3.141592653589793
pi * 2 = 6.283185307179586[/code] 声明自己的 PI 常量变量
另外,也可以根据需要用 PI 值或任何其他数学常数声明一个自定义常数变量。可以使用宏表达式或变量的 constexpr 指定符来实现。下面的示例代码演示了这两种方法的使用。[code]
#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;
}
[/code]
页:
[1]