龙听期货论坛's Archiver

龙听 发表于 2024-11-13 13:59

如何在 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]

龙听 发表于 2024-11-13 14:00

声明自己的 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]