Matlab中,直接利用等号判别式 == 可能会出现一些数值精度bug,采用abs(a-b)<eps的方法可以避免这种bug。
代码如下:
clc; clear; close all;
r = -1.1:0.1:1.1;
f1 = r(3) - -0.9
f2 = r(3) == -0.9
f3 = abs(r(3) - -0.9) < 1e-10
% 这个误差随着判断数值本身的大小而改变
r = 1e8*(-1.1:0.1:1.1);
f4 = r(3) - -0.9e8
f5 = r(3) == -0.9e8
f6 = abs(r(3) - -0.9e8) < 1e-5
结果如图所示: