1.0010 DOES NOT EQUAL 1.0010
5 views (last 30 days)
Show older comments
Hi all,
I have a segment of code that is evaluating curfactor(sc) == 1.0010 as 0 when curfactor(sc) == 1.0010 (should evaluate as 1). Both numbers are exactly 1.0010. I checked the class of both numbers and they are both double. What on Earth is happening here?!
I should note that curfactor is an array of size 1x3, and is defined at the very beginning of the function. The expression that is being evaluated is nested within 2 other helper functions. Maybe it's a scope issue? In any case, someone's breath stinks here, and it's certainly not mine.
Jeff
0 Comments
Accepted Answer
Image Analyst
on 10 Nov 2011
Jeff: Read the FAQ and then come back: http://matlab.wikia.com/wiki/FAQ#Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero.3F Like you said, it IS a scope issue, and I'd recommend Scope mouthwash for you - it's an excellent mouthwash.
More Answers (2)
bym
on 10 Nov 2011
did you check that they were exactly equal with a variable precision package like the symbolic toolbox?
2 Comments
Teja Muppirala
on 10 Nov 2011
Using "format hex" will also show the difference:
format hex
X = [(0.1+0.2); 0.3]
See Also
Categories
Find more on Startup and Shutdown in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!