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?

 采纳的回答

James Tursa
James Tursa 2013-7-10
编辑:James Tursa 2013-7-10
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

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 MATLAB 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by