MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [MATLAB基础] 很诡异的一段非常简单的代码,高手请进! (https://www.labfans.com/bbs/showthread.php?t=12210)

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

回复: 很诡异的一段非常简单的代码,高手请进!
 
[QUOTE=ahjxhly;38870]这个应该是数值精度问题
format hex
0.36=3fd70a3d70a3d70a;

0.34+0.02=3fd70a3d70a3d70b;

最后一位不一样

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

west 2010-11-03 09:33

回复: 很诡异的一段非常简单的代码,高手请进!
 
楼上说的好呀,一般比较是|t-xx|<eps


所有时间均为北京时间。现在的时间是 03:00

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