Math.Pow()的大功率比if语句慢

时间:2014-10-31 18:31:52

标签: c# performance math

我正在学习C#,所以今天我打印了这个进展的第一个n计数: An = 1 / n *( - 1)^ n;所以它基本上是-1 1/2 -1/3 1/4 ...我想知道使用if语句if(n%2 == 0)或更多elegenat Math.Pow()方法是否更好?即使对于数字1,Math.Pow()是否缓慢,当功率是一个大的int?

2 个答案:

答案 0 :(得分: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;
for (int i = 1; i <= n; i += 2) {
   sum -= 1.0/i;
}
for (int i = 2; i <= n; i += 2) {
   sum += 1.0/i;
}

答案 1 :(得分:1)

这是另一种方式:

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