gpt4 book ai didi

c++ - 使用 double 时精度损失

转载 作者:太空宇宙 更新时间:2023-11-03 10:45:18 24 4
gpt4 key购买 nike

我们可以处理高达 10^308 的大数字吗?如何仅使用 double 计算 11^105?

The answer of (11^105) is: 22193813979407164354224423199022080924541468040973950575246733562521125229836087036788826138225193142654907051

有没有可能得到11^105的正确结果?据我所知,double 可以处理 10^308,这比 11^105 大得多。我知道这段代码是错误的:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <iomanip>
using namespace std;

int main()
{
double n, p, x;
cin >> n >> p;
//scanf("%lf %lf", &n,&p);
x = exp(log((double)n)*p);
//printf("%lf\n", x);
cout << x <<endl;
return 0;
}

谢谢。

最佳答案

double 通常有 11bit 用于 exp(-1022~1023 归一化),52bit 用于 fact,1bit 用于符号。因此无法准确表示 11^105。

有关更多说明,请参阅 IEEE 754 on Wikipedia

关于c++ - 使用 double 时精度损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23605145/

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