| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 538 人关注过本帖
标题:最后这个0.000002是哪里来的?
只看楼主 加入收藏
gadden
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2006-11-7
收藏
 问题点数:0 回复次数:3 
最后这个0.000002是哪里来的?
#include<stdio.h>
void main()
{
int a,i=1,sum=0;
float ave=0;
while(i<=10)
{
printf("请输入一第%d人的成绩:",i);
scanf("%d",&a);
sum=sum+a;
i++;
}
ave=(double)sum/10;
printf("sum=%d",sum);
printf("ave=%lf",ave);
}

用VC编译连接后,输入9个90,一个44,总值是854,10个人的平均值是85.400002。
这是为什么?不是应该是85.400000吗?0.000002怎么跑出来的?
搜索更多相关主题的帖子: include double 平均值 
2006-11-14 20:37
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
因为高精度类型 不精确

如同(1==0.5+0.5) 有时这个表达式是错的

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2006-11-14 20:41
gadden
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2006-11-7
收藏
得分:0 
还是不太明白。那么为什么double类型的就没这个问题?double不是比float精度更高吗?

为了学习必须挖坟。疯狂的挖坟才能找到压箱底的宝贝。
2006-11-14 21:01
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
收藏
得分:0 
程序里
float ave=0;
你明明就定义成float.

改成double型就没问题了

2006-11-14 21:10
快速回复:最后这个0.000002是哪里来的?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019335 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved