gpt4 book ai didi

c - 用C打印pi值

转载 作者:行者123 更新时间:2023-12-02 02:51:18 24 4
gpt4 key购买 nike

我尝试打印出库 math.h 中定义的 pi 值,该库在我的系统上是

# 定义 M_PI 3.14159265358979323846/* pi */

用这个简单的代码:

#include <stdio.h>
#include <math.h>

int main() {

long double a = M_PI;

printf("%.20Lf\n", a);

return 0;
}

我得到的输出是

3.14159265358979311600

为什么它与 math.h 库中定义的不同?

有没有办法重现库中定义的内容?

我的手册说类型 long double 将精度扩展到 24 位。应该不足以代表这个数字吗?

最佳答案

可以通过调用 acosl(-1); 以标准方式查询实现提供的数学常数 π (pi) 的最佳精度:

const long double pi = acosl(-1.0L);
printf("%.20Lf\n", pi);

由于此方法具有执行计算的额外开销(而您的方法使用编译时常量),因此建议将结果放入常量变量中并将其用于整个程序,仅执行一次计算。优点是它是可移植的。这将以目标平台上可用的最佳精度计算 π,并且在切换平台时需要零代码更改。

标准禁止一致的实现定义常量M_PI,因为实现定义的保留名称必须以_开头,后跟大写字母或另一个 _。如果你想使用它,你必须自己定义它。

关于c - 用C打印pi值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61932813/

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