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

时间:2015-08-22 17:03:01

标签: matlab if-statement floating-point comparison

我有一个2D点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 个答案:

答案 0 :(得分:1)

答案很可能在于数字的直观表示。

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

要使用表示,请检查format命令。首先输入命令窗口format long e然后再次检查。