gpt4 book ai didi

c++ - 为什么小数点后的数字都是零?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:07:27 24 4
gpt4 key购买 nike

我想执行一些计算,我希望结果正确到小数位,比如 12。于是我写了一个样例:

#define PI 3.1415926535897932384626433832795028841971693993751
double d, k, h;
k = 999999/(2*PI);
h = 999999;
d = PI*k*k*h;
printf("%.12f\n", d);

但它给出了输出:

79577232813771760.000000000000

我什至使用了 setprecision(),但答案相同,而不是指数形式。

cout<<setprecision(12)<<d<<endl;

打印

7.95772328138e+16

也用过long double,但是没有用。

除了将整数部分和小数部分分别存储在 long long int 类型中之外,还有其他方法吗?

如果是这样,如何才能准确地得到答案?

最佳答案

double 只有大约 16 位十进制数字。小数点后的一切都是无稽之谈。 (事实上​​,该点的最后一位或两位数可能与无限精度计算不一致。)

长双未标准化,AFAIK。可能在您的系统上它与 double 相同,或者不再精确。这会让我有点吃惊,但它并没有违反任何规定。

关于c++ - 为什么小数点后的数字都是零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15931492/

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