Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2010-10-31, 11:29   #1
kenan2008
初级会员
 
注册日期: 2010-10-05
年龄: 37
帖子: 3
声望力: 0
kenan2008 正向着好的方向发展
默认 很诡异的一段非常简单的代码,高手请进!

下面这段程序(写成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?望高手破解真相!(不是解决办法,是为什么会这样)
kenan2008 当前离线   回复时引用此帖
旧 2010-11-01, 12:44   #2
abc886
初级会员
 
注册日期: 2008-02-27
年龄: 38
帖子: 27
声望力: 18
abc886 正向着好的方向发展
默认 回复: 很诡异的一段非常简单的代码,高手请进!

show(0.36)出不了结果,不知道怎么回事
abc886 当前离线   回复时引用此帖
旧 2010-11-01, 20:19   #3
ahjxhly
初级会员
 
注册日期: 2010-11-01
年龄: 35
帖子: 1
声望力: 0
ahjxhly 正向着好的方向发展
默认 回复: 很诡异的一段非常简单的代码,高手请进!

这个应该是数值精度问题
format hex
0.36=3fd70a3d70a3d70a;

0.34+0.02=3fd70a3d70a3d70b;

最后一位不一样

t==xx 改为 |t-xx|<=eps

此帖于 2010-11-01 20:46 被 ahjxhly 编辑。
ahjxhly 当前离线   回复时引用此帖
旧 2010-11-02, 17:27   #4
abc886
初级会员
 
注册日期: 2008-02-27
年龄: 38
帖子: 27
声望力: 18
abc886 正向着好的方向发展
默认 回复: 很诡异的一段非常简单的代码,高手请进!

楼上正解,这个太重要了,编程中需要重视
abc886 当前离线   回复时引用此帖
旧 2010-11-02, 21:17   #5
kenan2008
初级会员
 
注册日期: 2010-10-05
年龄: 37
帖子: 3
声望力: 0
kenan2008 正向着好的方向发展
默认 回复: 很诡异的一段非常简单的代码,高手请进!

引用:
作者: ahjxhly 查看帖子
这个应该是数值精度问题
format hex
0.36=3fd70a3d70a3d70a;

0.34+0.02=3fd70a3d70a3d70b;

最后一位不一样

t==xx 改为 |t-xx|<=eps
我就想知道为什么就对0.36,0.56,0.66这三个数出现这样的问题,而对其他的数没有问题?这应该不是随机的,因为每次运行都是一样的结果?
kenan2008 当前离线   回复时引用此帖
旧 2010-11-03, 09:33   #6
west
初级会员
 
注册日期: 2009-09-10
帖子: 7
声望力: 0
west 正向着好的方向发展
默认 回复: 很诡异的一段非常简单的代码,高手请进!

楼上说的好呀,一般比较是|t-xx|<eps
west 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 14:29


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.