计算负数的幂

Ved*_*shu 2 c# linq

我对 C# 比较陌生,因为 Math.Pow(x,y) 为负数返回 NaN(读取:不是负幂),我想知道如何更有效地计算结果。我现在正在做的是一个基本的 for 循环,但我想知道它是否可以以更短的方式实现(可能使用 Linq)?

for(int i=0;i<power;i++)
       {
           result = result * num;
       }
Run Code Online (Sandbox Code Playgroud)

Eri*_*ert 6

Math.Pow(x,y)返回NaN负数。

那是因为没有为负底定义任意取幂:

http://en.wikipedia.org/wiki/Exponentiation

当基数 b 是正实数时,可以通过指数函数为所有实数甚至复数指数 n 定义 b 到 n

现在,如果幂是整数(如您的情况),则定义了对负数求幂以获得实际结果,但Pow不会为您计算。你应该做的是:

  • 假设你想知道 Pow(-2, 5)
  • Pow问题Pow(2, 5)改为。
  • 看指数;如果它是偶数,那么你就得到了正确的答案。如果是奇数,则答案是否定的。

所以在这种情况下,Pow(2, 5)返回 32。指数 5 是奇数,所以设为 -3​​2,你就完成了。