大家好,求助一个问题,将n定义成为两种不同的数值类型,结果差别怎么这么大?
第一个程序:#include<stdio.h>
#include<math.h>
int main()
{
int sign=1,count=0;
double pi=0,n=1; //把n定义成double
while (fabs(sign/n)>=1e-6)
{
pi=pi+sign/n;
n=n+2;
sign=-sign;
count++;
}
pi=pi*4;
printf("pi=%10.8f,n=%10.0f,sign=%d,count=%d\n",pi,n,sign,count);
return 0;
}
第二个程序:
#include<stdio.h>
#include<math.h>
int main()
{
int sign=1,count=0,n=1; //把n定义成int
double pi=0;
while (fabs(sign/n)>=1e-6)
{
pi=pi+sign/n;
n=n+2;
sign=-sign;
count++;
}
pi=pi*4;
printf("pi=%10.8f,n=%10.0f,sign=%d,count=%d\n",pi,n,sign,count);
return 0;
}
当然这两个程序中,第一个程序是我想实现的。第二个是错误的。这里是求pi的近似值。