MATLAB: Colon operator rounding problem

MATLABprecisionsemi colon operator

Hello everyone!
I encountered a problem in one of my code, using the semi colon operator like this:
a = 0:0.1:120;
will not give me exactly what I want, it does return 0, 0.1, 0.2 etc, but with a small imprecision (equal to eps actually)
the following code :
a = 0:0.1:120;
disp(a(20));
disp(a(20)-1.9)
isequal(a(20),1.9)
is returning:
1.9
2.22044604925031e-16
ans =
0
Any help ? I really need this isequal(a(20),1.9) to return 1…
thanks !

Best Answer

Try it like this.
a=(0:1200)/10;
disp(a(20));
disp(a(20)-1.9);
isequal(a(20),1.9)
Your previous code was not returning 1 because of rounding errors when doing finite precision arithmetic.