c语言一道求π的题,为何一定要double n=1.0才得到pi的正确数值,第一张图中int n=1为什么不对

,n不是一直是整数吗,为何会得到=4?

(1)你这里sign是整型。

如果你的n也是整型的话,

term = sign/n的执行共分两步:

    结果sign/n是整型的(小数位舍去)

    然后将整型转化为双精度给term。

而pi = pi + term

虽然得到的pi是双精度,但是这时term后的小数位都舍去了,所以结果不正确。

(2)

同样的,如果你的n或者sign有一个是双精度的。

term = sign/n.根据c语言的运算规则,会将结果转化为sign和n中精度最大的。也就是双精度。所以结果正确。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-26
这道题目你错在循环中的最后一句term=sign/n,在C语言中,两个相除的数如果都是整数,结果也一定是整数,而本题需要计算的是小数,所以这句话改为term=sign*1.0/n即可。
第2个回答  2015-01-26
问你一个简单的问题
1/3的值是几?——1
1.0/3的值是几?——0.3333333333
n必须是double类型才可以啊

相关了解……

你可能感兴趣的内容

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