MATLAB: Problem comparing two variables

comparing variablescomparisonconditional-branchingif else

Can someone please explain why the comparison result comes out false for this code?
———————————————————–
Node.active_time=1;
temp=0.5;
%through some iterations temp increases. Lets hard code it here
temp=temp+0.1;
temp=temp+0.1;
temp=temp+0.1;
temp=temp+0.1;
temp=temp+0.1;
%by now value of temp is 1.0000
temp==Node.active_time
—————————————————————-
Matlab answers 0 for this, which means they are not equal. Why?
However, if we manually assign values and then compare them, it agrees with comparision. For example,
temp=1.0000;
Node.active_time=1;
temp==Node.active_time
matlab's answer to this is 1, which means they are equal (rightly so).
Why is it that comparison in previous code shows false?

Best Answer

Floating point operation limitations. E.g., see here
In your particular case, 0.1 cannot be represented exactly in IEEE double floating point arithmetic, leading to the differences you are seeing.
For floating point comparisons you generally need to use a tolerance, e.g.,
abs(temp-Node.active_time) < tol