gpt4 book ai didi

c - 无符号长整数的 Pow 精度

转载 作者:太空狗 更新时间:2023-10-29 15:28:45 24 4
gpt4 key购买 nike

所以我正在尝试执行 pow (x, y)。其中 x 和 y 是无符号长整型,结果存储在无符号长整型中。这个结果将小于 2^63,所以我应该可以做到。但是因为它返回一个 float ,所以我得到的大数结果不准确。有没有办法在不使用像 bignum 这样的外部库的情况下获得准确的结果?我知道我可以简单地做 x*x Y 次,但这是我试图避免的,因为我试图让我的程序更快。

最佳答案

pow 函数返回一个有精度问题的 double,当你将它转换为 long 时,你肯定会遇到精度问题。据我所知,如果您不使用库,则无法单独使用 pow 函数获得准确的结果。

你也可以看看Exponentiation by squaring也看看 barak manos answer您可以在其中尝试将自己的 pow 函数实现为

unsigned long long pow(unsigned long long x,unsigned int y)
{
unsigned long long res = 1;
while (y > 0)
{
if (y & 1)
res *= x;
y >>= 1;
x *= x;
}
return res;
}

关于c - 无符号长整数的 Pow 精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33281437/

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