![]() |
很诡异的一段非常简单的代码,高手请进!
下面这段程序(写成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?望高手破解真相!(不是解决办法,是为什么会这样) |
回复: 很诡异的一段非常简单的代码,高手请进!
show(0.36)出不了结果,不知道怎么回事
|
回复: 很诡异的一段非常简单的代码,高手请进!
这个应该是数值精度问题
format hex 0.36=3fd70a3d70a3d70a; 0.34+0.02=3fd70a3d70a3d70b; 最后一位不一样 t==xx 改为 |t-xx|<=eps |
回复: 很诡异的一段非常简单的代码,高手请进!
楼上正解,这个太重要了,编程中需要重视
|
回复: 很诡异的一段非常简单的代码,高手请进!
[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这三个数出现这样的问题,而对其他的数没有问题?这应该不是随机的,因为每次运行都是一样的结果? |
回复: 很诡异的一段非常简单的代码,高手请进!
楼上说的好呀,一般比较是|t-xx|<eps
|
所有时间均为北京时间。现在的时间是 03:00。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.