MATLAB: The loop result is incorrect

floating pointfor looploop

I have a loop with the following code But when a=3.000 and b=3 the result is B not A. (this code not the actual code just an illustration)
if a>=b
disp(A)
else
disp(B)
end

Best Answer

Remember, that Matlab works with the type double, which is a floating point type according to IEEE754. If you define a variable as:
a = 2.99999999999999
if is displayed as 3.000, when the format in the output to the command window is set to 'shortE'.
doc format
Try this:
disp(a - b)
fprintf('%.16g\n', a)
fprintf('%.16g\n', b)
You will see, that Matlab works correctly, but only the rounded output to the command window is confusing.
See also: FAQ: Why is 0.1+0.2 ~= 0.3? and hundreds of other related threads - search e.g. for "IEEE754" or "floating point" in this forum. The tag "faq6.1" is used frequently also for this kind of problems.