gpt4 book ai didi

c++ - 在 cpp 中计算数字的 n 次根时答案错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:38:15 28 4
gpt4 key购买 nike

我正在使用标准库方法 pow() 计算正整数的第 n 个根。这是我程序的片段:

double x,y;
x=pow(64,(1.0/3));
int z;
printf("x=%lf\n",x);
z=(int)x;
printf("%d\n",z);

但是在求 64 的立方根时。X 打印为 4.000000,而 z 打印为 3。为什么这样?

有人可以提出更好的算法吗?

最佳答案

如果你在 x 上打印更多数字,你就会看到问题所在(我随机选择了 30 个):

double x ;
x = pow(64, 1.0/3);
printf("x=%.30lf\n",x);

输出:

x=3.99999999...999600000000 

很明显,如果将 x 转换为 int,它将变为 3

没有“完美”的解决方案。如果你只处理整数,你可以创建自己的根函数,但如果你想使用 float ,你需要处理由于浮点表示引起的精度问题。

也许有一些 C 库可以帮助您解决此类问题。

关于c++ - 在 cpp 中计算数字的 n 次根时答案错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24105367/

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