如果构造,Matlab 脚本不评估有效

Matlab script does not evaluate valid if construction

我有一个二维点 vectorA 和一个带有边界 vectorXvectorY 的矩形。以下MWE代表我的MATLAB代码检查点是否在连续的四个边界上:

vectorA=[1.6667 2];
vectorX=[0 1.6667];
vectorY=[2 3.3333]
if vectorA(1)==vectorX(1)
    disp('XL')
end
if vectorA(1)==vectorX(2)
    disp('XU')
end
if vectorA(2)==vectorY(1)
    disp('YL')
end
if vectorA(2)==vectorY(2)
    disp('YU')
end

我遇到过函数没有检测到给定坐标位于边界上的情况。我打印了变量的内部值,尽管我有 if 1.6667==1.6667,但未评估 if

手动执行我的脚本的连续计算工作正常(包括 1.6667==1.6667 产生 1),但执行脚本会给出错误的结果。我在哪里可以找到这种奇怪行为的原因?

答案很可能在于数字的视觉表示。

我的意思是您 看到 值是 1.6667 但值(可能)是 1.666641239012783482983742987 (只是随机输入)。

要玩弄表示,请检查 format 命令。首先输入命令 window format long e 并再次检查。