内置的Math.Pow()
.NET 中的函数引发了double
基地到一个double
指数并返回 adouble
result.
对整数执行相同操作的最佳方法是什么?
补充:好像可以直接施法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;
}
请注意,这不允许负幂。我将把它作为练习留给你。 :)
Added:哦,是的,差点忘了 - 还要添加溢出/下溢检查,否则您可能会遇到一些令人讨厌的意外。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)