| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 437 人关注过本帖
标题:请教一下,判断一个浮点变量x,是否为零
只看楼主 加入收藏
冰糖年糕
Rank: 2
等 级:论坛游民
帖 子:19
专家分:15
注 册:2015-3-6
结帖率:0
收藏
已结贴  问题点数:10 回复次数:6 
请教一下,判断一个浮点变量x,是否为零
if(|x-0.000000001|<=0.0000000001)
 printf("yes");
else
  printf("no")
 我不理解为什么要是x-0.0000001的绝对值???
2015-03-07 10:32
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:4 
c语言绝对值这样表示?还是百度下吧。
用绝对值相当于x-0.000000001大于或等于0且小于0.000000001,因为正负0.0000000000001都是趋向于0的,如果不用绝对值则趋向于0的负数就判断不出来。

能编个毛线衣吗?
2015-03-07 10:47
冰糖年糕
Rank: 2
等 级:论坛游民
帖 子:19
专家分:15
注 册:2015-3-6
收藏
得分:0 
回复 2楼 wmf2014
不理解,
2015-03-07 11:15
冰糖年糕
Rank: 2
等 级:论坛游民
帖 子:19
专家分:15
注 册:2015-3-6
收藏
得分:0 
回复 2楼 wmf2014
为什么要减0.0000001,我想如果,浮点数不是零减了0。000001后,还是小于0。000001,验证不就是错的么,如果是零还好说,不是的话?
2015-03-07 11:22
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:4 
以下是引用冰糖年糕在2015-3-7 11:15:07的发言:

不理解,

因为浮点数是有误差的 所以没法用==判断 只能用这种方法

另外 C语言里求绝对值是fabs()


[ 本帖最后由 zklhp 于 2015-3-7 11:25 编辑 ]
2015-03-07 11:23
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用冰糖年糕在2015-3-7 11:22:08的发言:

为什么要减0.0000001,我想如果,浮点数不是零减了0。000001后,还是小于0。000001,验证不就是错的么,如果是零还好说,不是的话?

这个0.0000001就是误差 是你定的 在这个误差范围内 就认为是0 像你说的 如果不小于 那么就不是0
2015-03-07 11:27
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
收藏
得分:4 
因为浮点数存储方式导致他是不完全准确存储的,比如7.000000可能是6.999999
所以你写成if(x==0)是不对的
可以这样:
if( fabs(x)<=1E-6  

如果x 的绝对值小于等于 10的-6次方 就认为x为0了。

你醒了?快起来敲代码!!
2015-03-07 17:11
快速回复:请教一下,判断一个浮点变量x,是否为零
数据加载中...
 
   



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

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