版块导航
正在加载中...
客户端APP下载
论文辅导
申博辅导
登录
注册
帖子
帖子
用户
本版
应《网络安全法》要求,自2017年10月1日起,未进行实名认证将不得使用互联网跟帖服务。为保障您的帐号能够正常使用,请尽快对帐号进行手机号验证,感谢您的理解与支持!
24小时热门版块排行榜
>
论坛更新日志
(2208)
>
虫友互识
(89)
>
文献求助
(36)
>
论文道贺祈福
(31)
>
导师招生
(21)
>
找工作
(18)
>
博后之家
(13)
>
考博
(11)
>
硕博家园
(10)
>
休闲灌水
(10)
>
教师之家
(7)
>
招聘信息布告栏
(6)
>
基金申请
(6)
>
绿色求助(高悬赏)
(5)
>
考研
(5)
>
论文投稿
(5)
小木虫论坛-学术科研互动平台
»
计算模拟区
»
程序语言
»
C/C++
»
再谈float 与零值问题
1
1/1
返回列表
查看: 1580 | 回复: 0
只看楼主
@他人
存档
新回复提醒
(忽略)
收藏
在APP中查看
我爱小虫子
新虫
(正式写手)
应助: 8
(幼儿园)
金币: 736.9
散金: 158
红花: 9
沙发: 1
帖子: 755
在线: 211.6小时
虫号: 2520785
注册: 2013-06-25
专业: 通信理论与系统
[
求助
]
再谈float 与零值问题
想来关注一下细节,又迷茫了,望大神给解惑。。。
我们说比较float型变量x与0的大小时,要设置一个精度epsilon,
const float EPSINON = 0.00001; //自己设定的一个精度
if ((x >= - EPSINON) && (x <= EPSINON)
在这个范围内,则认为,x是=0的。
今天看到了<float.h>头文件,
FLT_EPSILON (小的正数,float的0跨度值),我是不是可以认为 ,上面的const 常量的定义可以省略,比较直接换成if ((x >= - FLT_EPSINON) && (x <=FLT_ EPSINON) 上面说的这一堆好像没有问题,对吧
看下面:
在<float.h>头文件中,FLT_EPSILON的宏定义
#include<float.h>
cout<<"FLT_EPSILON="<<FLT_EPSILON<<endl;
cout<<"FLT_MIN="<<FLT_MIN<<endl;
float f=0.00000000000000000000000000000000000000000000000002; //此处可以先不去看f到底多大
cout<<f<<endl;
cout<<(f==0)<<endl;
由下图可以看到精度的指数是-7,最小值的指数是-38,我发现,当我这个f的指数不超过-(7+38)时,它存的都是一个接近我定义的f的数,但是,如果f的指数为-46,或者-48了,这时候存的f 就是0了,f==0这时是成立的。
现在有个疑惑,我是不是可以这样认为,其实,float是可以和零值比较的,前提是它足够小(不只是小于了宏定义里的最小值,还牵扯到精度的指数)。
测试了一下,如果我定义的f的指数是-48时,(2*10^-48)结果如下图1,f显示存的是0
如果我定义的f的指数是-44时,结果如下图2,f显示存的是一个接近定义数的浮点数
以上观点是我今天测试时感觉到的,想请教大神证实一下,我有没有误解。。。。
1.jpg
2.jpg
回复此楼
» 猜你喜欢
博士读完未来一定会好吗
已经有25人回复
导师想让我从独立一作变成了共一第一
已经有9人回复
到新单位后,换了新的研究方向,没有团队,持续积累2区以上论文,能申请到面上吗
已经有11人回复
读博
已经有4人回复
JMPT 期刊投稿流程
已经有4人回复
心脉受损
已经有5人回复
Springer期刊投稿求助
已经有4人回复
小论文投稿
已经有3人回复
申请2026年博士
已经有6人回复
1楼
2014-03-11 10:12:02
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
相关版块跳转
第一性原理
量子化学
计算模拟
分子模拟
仿真模拟
程序语言
我要订阅楼主
我爱小虫子
的主题更新
1
1/1
返回列表
如果回帖内容含有宣传信息,请如实选中。否则帐号将被全论坛禁言
普通表情
龙
兔
虎
猫
百度网盘
|
360云盘
|
千易网盘
|
华为网盘
在新窗口页面中打开自己喜欢的网盘网站,将文件上传后,然后将下载链接复制到帖子内容中就可以了。
信息提示
关闭
请填处理意见
关闭
确定