C语言利用以下公式求π。π方/6=1/1方+1/2方+1/3方+1/4方......直到1/n方,要求n<1000000

#include<stdio.h>
#include<math.h>
main()
{long int t;
double sum=0,pi=0;
for(t=1;t<1000000;t++)
sum+=1.0/(t*t);
pi=sqrt(6*sum);
printf("pi=%20f\n",pi);

}
看看错在哪里谢了

程序没有错,不过是结果溢出了,所以显示不正确,你把1000000改成1000试试,没有任何问题追问

改为1000可以 但题干要求是10的6次方

追答

我也不明白怎么会溢出啊,按理说是不会溢出的啊
sqrt的返回值就是double啊
把long int t;改成double t;我刚试了,可以的
呵呵
不太清楚是为什么?1.0就是double型的,然后t*t就自动转换成double型的,可能是转换过程中出了问题吧

追问

你看看

追答

我知道,我开始运行也是输出你贴上来的
你把long int t;改成double t;我试过了,可以的...

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-28
sum+=1.0/(t*t);
改成
sum+=1.0/(double)(t*t);
试下追问

不行

第2个回答  2011-03-28
extern float sqrt(float x);
是不是数据类型问题 都改为float试试追问

不行

第3个回答  2011-03-28
你想问什么?追问

你不知道?那不是说明白了么 问题补充

追答

double 型在printf的时候要用 %lf的
如果不是这里错,麻烦说下是运行结果错还是编译错,把错误提示贴上来,这样回答的能快点

追问

你看看

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网