.NET 中内置的 Math.Pow()
函数将一个 double
基数提升为一个 double
指数并返回一个 双
结果。
对整数执行相同操作的最佳方法是什么?
补充:似乎可以将 Math.Pow()
结果转换为 (int),但这是否总是会产生正确的数字并且没有舍入错误?
最佳答案
一个相当快的可能是这样的:
int IntPow(int x, uint pow)
{
int ret = 1;
while ( pow != 0 )
{
if ( (pow & 1) == 1 )
ret *= x;
x *= x;
pow >>= 1;
}
return ret;
}
请注意,这不允许负幂。我会把它留给你作为练习。 :)
已添加:哦,是的,差点忘了 - 还要添加上溢/下溢检查,否则您可能会遇到一些令人讨厌的意外。
关于c# - 你如何在 C# 中进行 *integer* 求幂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/383587/