求大神给解答一下
int sign=1,n=1;//大神们注意这个地方,当把n=1放在这个位置时输出为4double term=1,pi=0;
while(fabs(term)>=1e-6)
{
pi=pi+term;
sign=-sign;
n=n+2;
term=sign/n;
}
pi=pi*4;
printf("%10.8f\n",pi);
return 0;
}
当把n=1放在上面位置时输出为4
而
#include<stdio.h>
#include<math.h>
int main()
{
int sign=1;
double term=1,pi=0,n=1;//注意这个地方
while(fabs(term)>=1e-6)
{
pi=pi+term;
sign=-sign;
n=n+2;
term=sign/n;
}
pi=pi*4;
printf("%10.8f\n",pi);
return 0;
}
当把n定义为双精度时就能正确输出π的值。
谁能具体给我讲一下时什么原因呢,我知道应该是数据类型错了,不过能不能讲一下具体的电脑的运算过程呢?