DQH 发表于 2020-2-17 14:44:51

我这代码有啥问题啊

我写了一个按pi/4=1-1/3+1/5-1/7公式求pi近似值的代码,为什么求不出来啊
#include<stdio.h>
#include<math.h>
int main()
{
        int i,j,cnt=1;//i是分子,j是分母,我用cnt来看什么时候取负号。
        double sum=0;
        i=1;
        j=1;
        while (1)
        {
                if(cnt%2==0)
                {
                        i=-i;
                }
                sum=sum+i/j;
                j=j+2;
                cnt++;
               
                if(fabs(sum)>1e-6)
                {
                        break;
                }
               
        }
          printf("%f",sum);
        return 0;
}

qiuyouzhi 发表于 2020-2-17 14:50:55

是没有结果还是答案错误?

ba21 发表于 2020-2-17 14:59:39

问题1 i/j 应用浮点 如 2.0 /1
问题2 fabs(sum)>1e-6 判断这里
#include<stdio.h>
#include<math.h>
int main()
{
      double pi=0, i = 1, j = 1, t = 1;

      while (fabs(t)>1e-6)
      {
                pi += t;
                j += 2;
                i = -i;
                t = i/j;
      }
          printf("%f",pi*4); // 最后还得*4
      return 0;
}

DQH 发表于 2020-2-17 15:25:55

qiuyouzhi 发表于 2020-2-17 14:50
是没有结果还是答案错误?

没有结果,没法输出

DQH 发表于 2020-2-17 15:32:32

ba21 发表于 2020-2-17 14:59
问题1 i/j 应用浮点 如 2.0 /1
问题2 fabs(sum)>1e-6 判断这里

我逻辑上有啥问题吗,我把我代码改成浮点型,精度判断那里改了还是不行
页: [1]
查看完整版本: 我这代码有啥问题啊