• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

MATLAB的eps,浮点数相对精度

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  MATLAB的eps函数,官方帮助文档是这么描述的:Floating-point relateive accuracy,也就是浮点数的相对精度。

  大家都知道,在数学中,实数有无穷多个,数值可以无限大,精度也可以无限小。而在计算机中,因为表示数值的字长有限,不可能无限地表示一个数的有效数字。所以在计算机中,是没有绝对概念上的无穷大和无穷小的。两个相邻数字(中间不能再有其他数值)的“间隔”,就是一般意义上的相对精度。(相对精度的具体含义可以自行Baidu,也可以参见这个帖子: 关于Matlab的eps函数 )。

  好,下面进入正题:

    我在查看eps的帮助文档时,发现文档中提到,eps的输出应该是:

2^(-52)

    当时我就不理解了,因为大家直接在MATLAB下面输出,结果肯定是:

2.2204e-16

    这不对啊。百思不得其解!有聪明的看官肯定知道我到底犯了什么错误。不过,当时我就是不明白,看了stackoverflow的这个帖子( What\'s the actual value of eps in Matlab? ),才知道自己的问题,真是蠢到家了。因为大家只要这么写:

 

>> 2^(-52)

ans =
    
    2.2204e-16

    明白了吧!注意的一点是,如果这么写:

>> 2^(-52) == 2.2204e-16

ans =
  
  0

    结果是不对的。因为计算机存储数值的问题,2.2204e-16在存储时,与2^(-52)是不同的,有误差。所以,结果显示二者不同。有经验的同学,应该在判断一个浮点变量是否为零的时候,碰到过类似的事情。注意在判断浮点数是否相等时,不能使用 “==” 符号

  

  总之,碰到问题还是应该多想想,多试试。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi控件开发基础篇发布时间:2022-07-18
下一篇:
Delphi项目相对路径问题发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap