登录论坛

查看完整版本 : [MATLAB基础] 很诡异的一段非常简单的代码,高手请进!


kenan2008
2010-10-31, 11:29
下面这段程序(写成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?望高手破解真相!(不是解决办法,是为什么会这样)

abc886
2010-11-01, 12:44
show(0.36)出不了结果,不知道怎么回事

ahjxhly
2010-11-01, 20:19
这个应该是数值精度问题
format hex
0.36=3fd70a3d70a3d70a;

0.34+0.02=3fd70a3d70a3d70b;

最后一位不一样

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

abc886
2010-11-02, 17:27
楼上正解,这个太重要了,编程中需要重视

kenan2008
2010-11-02, 21:17
这个应该是数值精度问题
format hex
0.36=3fd70a3d70a3d70a;

0.34+0.02=3fd70a3d70a3d70b;

最后一位不一样

t==xx 改为 |t-xx|<=eps
我就想知道为什么就对0.36,0.56,0.66这三个数出现这样的问题,而对其他的数没有问题?这应该不是随机的,因为每次运行都是一样的结果?

west
2010-11-03, 09:33
楼上说的好呀,一般比较是|t-xx|<eps