| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2562 人关注过本帖
标题:浮点小数的比较
取消只看楼主 加入收藏
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
结帖率:100%
收藏
已结贴  问题点数:40 回复次数:2 
浮点小数的比较
我想比较浮点小数的大小,却出现了个问题
程序如下:
#include<stdio.h>
#include<math.h>
main()
{
float a;
scanf("%f",&a);
if(fabs(a-0.3)>0&&fabs(a-0.3)<1.0e-1)
printf("hao\n");
else printf("bu hao\n");
}
我想要的效果是当输入0.3000000到0.3999999的数时条件成立,其余的条件不成立;
为什么我输入0.2时输出的结果也是"hao"呢?
0.2-0.3的值为-0.1绝对值为0.1,不满足条件fabs(a-0.3)<1.0e-1。
我把条件改为if(flabs(a-0.3)=0)时,输入0.3却输出“bu hao",
0.3-0.3不是等于0吗?为什么会是条件不成立?

哈哈,我已经试出来答案了,结果在最后一楼。

[ 本帖最后由 小赵q1 于 2011-11-29 23:35 编辑 ]
搜索更多相关主题的帖子: include 绝对值 
2011-11-29 16:43
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
收藏
得分:0 
回复 4楼 laznrbfe
一时没注意,那里应该是fabs我给打成flabs了,呵呵。
我想实现的功能是在输入0.300000000到0.3999999999时条件成立,其余时条件不成立
该怎样改呢?
输入0.2时是-0.1的绝对值它运行成立,输入0.4时是0.1它却不成立,呵呵,
其实你说的我明白的差不多了,浮点型小数不能只看表面,所以不能直接比较只能用跟非常接近的一个数比较
2011-11-29 22:45
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
收藏
得分:0 
我其实是想做个程序计算10的阶乘,输出从1到10每个阶乘的值,并计算每个结果的位数,比如结果是一位数,就输出结果,并输出1,结果是3位数,就输出结果并输出3,以此类推;
里面要用到这个条件就是比如当输入的值为0.300000到0.399999之间时条件成立,其余不成立,

只用在原程序里改下条件if(a-0.3>0&&a-0.3<0.1)就能实现想要的结果,

我想做的程序大家有兴趣可以自己做下哦,呵呵
2011-11-29 23:41
快速回复:浮点小数的比较
数据加载中...
 
   



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

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