gpt4 book ai didi

c++ - 最佳平台独立 pi 常数?

转载 作者:可可西里 更新时间:2023-11-01 15:07:50 37 4
gpt4 key购买 nike

我知道你可以使用:

#define _USE_MATH_DEFINES

然后:

M_PI

得到常量 pi。但是,如果我没记错的话(欢迎评论)这是编译器/平台相关的。那么,当我将 pi 常量从 Linux 移植到其他系统时,使用 pi 常量最可靠的方法是什么?

我知道我可以只定义一个 float / double ,然后自己将其设置为一个四舍五入的 pi 值,但我真的很想知道是否有指定的机制。

最佳答案

Meeting C++有一篇关于生成 pi 的不同选项的文章:C++ & π他们讨论了一些选项,来自 cmath ,这不是平台独立的:

double pi = M_PI;
std::cout << pi << std::endl;

来自boost :

std::cout << boost::math::constants::pi<double>() << std::endl

并使用 atan ,删除了 constexpr,因为正如 SchighSchagh 指出的那样,它不是平台独立的:

 double const_pi() { return std::atan(1)*4; }

我将所有方法收集到一个 live example 中:

#include <iostream>
#include <cmath>
#include <boost/math/constants/constants.hpp>

double piFunc() { return std::atan(1)*4; }

int main()
{
double pi = M_PI;
std::cout << pi << std::endl;
std::cout << boost::math::constants::pi<double>() << std::endl ;
std::cout << piFunc() << std::endl;
}

C++2a pi_v

在 C++2a 中我们应该得到 pi_v :

#include <numbers>
#include <iostream>

int main() {
std::cout<< std::numbers::pi_v<double> <<"\n";
}

关于c++ - 最佳平台独立 pi 常数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21867617/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com