累加求和直到最后一项的值小于1e-6应该怎么写?

问题描述:

是这个样子?

int s;
float n,term;
double sum;
term=1,s=1,n=1,sum=1;
while(fabs(term)>=1e-6)
{
    s=-s; 
    n++;
    term=s/n;
    sum=sum+term;
}

还是这个样子呢

 int s;
 float n,term;
 double sum;
  term=1,s=1,n=1,sum=0;
  while(fabs(term)>=1e-6)
    {
        sum=sum+term;
        s=-s; 
        n++;
        term=s/n;
        }


如果是第二种的话最后一项不就不会加在总数里吗?
以及为什么定义的时候要将n定义为浮点数?为什么定义为整数代码会出错?

用第一段代码,n如果是整形,term=s/n;只能返回整形,如果小于1返回结果是0,整形相除只能返回整形。