#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);
试下追问
改成
sum+=1.0/(double)(t*t);
试下追问
不行
第2个回答 2011-03-28
extern float sqrt(float x);
是不是数据类型问题 都改为float试试追问
是不是数据类型问题 都改为float试试追问
不行
第3个回答 2011-03-28
你想问什么?追问
你不知道?那不是说明白了么 问题补充
追答double 型在printf的时候要用 %lf的
如果不是这里错,麻烦说下是运行结果错还是编译错,把错误提示贴上来,这样回答的能快点
你看看