Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2010-10-05
年龄: 37
帖子: 3
声望力: 0 ![]() |
![]()
下面这段程序(写成M文件),相信有点MATLAB基础的都应该看得懂:
function show(xx) for t=0.08:0.02:0.98 if t==xx figure; plot(1:3,3:3:9); end end 当运行show(0,34)或者show(0.68)等都没问题,能正常画一幅图。 但是有三个数据不行,0.36,0.56,0.66,即show(0.36),show(0.56),show(0.66)不显示图像,直接跳过了。而这三个数也是在0.08:0.02:0.98范围内的,为什么只有当这三个数时不显示呢?在三台电脑上试过,都是如此! 是否为MATLAB某一BUG?望高手破解真相!(不是解决办法,是为什么会这样) |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2008-02-27
年龄: 38
帖子: 27
声望力: 18 ![]() |
![]()
show(0.36)出不了结果,不知道怎么回事
|
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2010-11-01
年龄: 35
帖子: 1
声望力: 0 ![]() |
![]()
这个应该是数值精度问题
format hex 0.36=3fd70a3d70a3d70a; 0.34+0.02=3fd70a3d70a3d70b; 最后一位不一样 t==xx 改为 |t-xx|<=eps 此帖于 2010-11-01 20:46 被 ahjxhly 编辑。 |
![]() |
![]() |
![]() |
#4 |
初级会员
注册日期: 2008-02-27
年龄: 38
帖子: 27
声望力: 18 ![]() |
![]()
楼上正解,这个太重要了,编程中需要重视
|
![]() |
![]() |
![]() |
#5 |
初级会员
注册日期: 2010-10-05
年龄: 37
帖子: 3
声望力: 0 ![]() |
![]() |
![]() |
![]() |
![]() |
#6 |
初级会员
注册日期: 2009-09-10
帖子: 7
声望力: 0 ![]() |
![]()
楼上说的好呀,一般比较是|t-xx|<eps
|
![]() |
![]() |