,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类型才可以啊
1/3的值是几?——1
1.0/3的值是几?——0.3333333333
n必须是double类型才可以啊