C# Math.Pow()在使用大功率语句时是否比if语句慢

C# Math.Pow()在使用大功率语句时是否比if语句慢,c#,performance,math,C#,Performance,Math,我现在正在学习C#,所以今天我打印了这个级数的第一个n计数: An=1/n*(-1)^n;所以它基本上是-1 1/2-1/3 1/4。。。我想知道是使用if语句if(n%2==0),还是使用更多的elegenatMath.Pow()方法更好?当幂为大整数时,即使对于数字1也是慢的吗?我会用三元运算符这样编码: double sum = 0.0; for (int i = 1; i <= n; ++i) { sum += ((i % 2) == 0) ? +1.0 : -1.0)/i;

我现在正在学习C#,所以今天我打印了这个级数的第一个n计数:
An=1/n*(-1)^n;所以它基本上是-1 1/2-1/3 1/4。。。我想知道是使用if语句
if(n%2==0)
,还是使用更多的elegenat
Math.Pow()方法更好?当幂为大整数时,即使对于数字1也是慢的吗?

我会用三元运算符这样编码:

double sum = 0.0;
for (int i = 1; i <= n; ++i) {
   sum += ((i % 2) == 0) ? +1.0 : -1.0)/i;
}
double sum=0.0;
对于(inti=1;i,还有另一种方法:

int sign = -1;
for(int n = 1; n <= N; n++)
{
    double a_n = (double)sign/n;
    sign *= -1;
}
int符号=-1;

对于(int n=1;n既然您正在学习编程,那么您可以构建一个小程序来测试它吗?构建一个大循环(可能是一百万次迭代)用“<代码>系统”、“诊断”、“秒表< /代码>”的结果,您也可以不做任何操作,而是手动地将循环展开2。我不会使用Ma.PoW来替换符号。您可能需要提到“代码>三进制< /代码>操作符。不完全是初学者的想法,而且很难搜索。这是正确的想法。是的,但你是在计算所有a的和,而不是单个a的和。这是真的。我在展示我的数学偏见:我假设这是一个系列的和。注意数学标签。我确切地知道你的意思。只是想澄清一下,这样我们就不会混淆可能是一个或另一个意思的人。评论很好;我感谢澄清。
int sign = -1;
for(int n = 1; n <= N; n++)
{
    double a_n = (double)sign/n;
    sign *= -1;
}