根据公式计算π值(C语言),π^2/6=1+1/2^2+1/3^2+…..+1/n^2,为什么结果时这样呀?

程序是这样的:
#include<stdio.h>#include<math.h>void main(){ int n,i; double pi,h,sum; sum=0; printf("请输入一个N值:"); scanf("%d",&n); for(i=1;i<=n;i++) { h=1/(i*i); sum=sum+h; } pi=sqrt((sum*6)); printf("n=%d,pi=%f",n,pi);}

但结果值这样的:

这是为什么呀,算法哪里有问题呀?

将语句

h=1/(i*i);

改成

h=1.0/i/i;

这样才会计算得到浮点数,否则当 i>1 以后,h都等于0。

追问

哥们儿,还是呀,,,,

追答

你输入h=1.0/i/i了吗?要1.0哦,你还是输入1啊!1与1.0是有区别的,前者是整型,后者是实型,整型除以整型还是得到整型数据哦!所以h=1/i/i,只有在i=1时,h=1,i>1时,h=0,所以你那样的计算结果只会得到pi=sqrt(6)。

追问

噢噢,好

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

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