计算1-1/2+1/3-1/4+——+1/99-1/100+..,直到最后一项的绝对值小于10-6为止,代码有什么问题?

#include <stdio.h>
#include <stdlib.h>
int main()
{
   double i=2;
   double sum=1;
   while(sum>1e-6)
   {       int n=i;
           if(n%2!=0)
              {
                  i=-i;
              }
           sum=abs(sum-1/i);
            i++;
   }
   printf("%lf",sum);
    return 0;
}

对比下:


#include <stdio.h>
#include <stdlib.h>

int main()
{

    int i = 2, n = 1;
    double sum = 1, v = 1.0;

    while(v > 1e-6)
    {
        n=-n;
        v = 1.0 / i;
        sum += n * v;
        i++; 
    }

    printf("%lf\n",sum);
    return 0;
}

运行结果:

img