c语言数列求和:求1-2/3+3/5-4/7+5/9-6/11+...的前n项和,结果保留3位小数

#include<stdio.h>#include<math.h>intmain(){intn,i,deno;doublesum,flag;scanf("%d",&n);... #include<stdio.h>
#include<math.h>
int main()
{
int n,i,deno;
double sum,flag;
scanf("%d",&n);
flag=1;
sum=0;deno=1;
for(i=1;i<=n;i++)
{
sum=flag*(i/deno)+sum;
deno+=2;
flag=-flag;
}

printf("%.3f\n",sum);
return 0;
}
这样运行之后 输入5 输出为1 但正确答案是0.917,,然后我deno定义为double类型时竟然神奇的又好了 有什么区别? 为什么呢
展开
 我来答
lcy8760450
2015-09-26 · TA获得超过956个赞
知道小有建树答主
回答量:610
采纳率:64%
帮助的人:398万
展开全部
i/deno只有当i = 1 deno = 1,i/deno = 1,
其他情况得0,因为"/"对于int型数据来说,除后取整操作,即10/9=1.111111......,那么实际结果为1,小数点后的全部丢弃(不是四舍五入,而是全舍)
要想得到你要的结果应该这样
1.0 * i / deno //1.0是double型的,与i相乘还得double型的,这样就能出正确结果

或 ((double) i ) / deno
追问
是不是只要运算中有一个浮点数得到的结果就是浮点数,譬如像我那样直接把deno定义double类型
追答
嗯对的,精度低与精度高的数值操作后得精度较高同类型的值
匿名用户
2015-09-26
展开全部
i/deno这两个计算的结果是个整数。
追问
是因为两个数都是整数吗?
追答
是的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式