如何在 C# 中进行*整数*求幂?

2023-12-03

内置的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(使用前将#替换为@)

如何在 C# 中进行*整数*求幂? 的相关文章

随机推荐