Problem comparing two variables

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?

 Risposta accettata

James Tursa
James Tursa il 10 Lug 2013
Modificato: James Tursa il 10 Lug 2013
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

Più risposte (0)

Categorie

Scopri di più su MATLAB in Centro assistenza e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by