我有一个2D点vectorA
和一个边界为vectorX
和vectorY
的矩形。以下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}}),但执行脚本会产生错误的结果。我在哪里可以找到这种奇怪行为的原因?
答案 0 :(得分:1)
答案很可能在于数字的直观表示。
我的意思是你看值是1.6667
但值(可能)是1.666641239012783482983742987
(只是随机输入)。
要使用表示,请检查format
命令。首先输入命令窗口format long e
然后再次检查。