Why doesn't .3 - .2 - .1 = 0
    11 views (last 30 days)
  
       Show older comments
    
I was bored yesterday at work and I was playing around with some decimal numbers when I stumbled across something I thought was pretty interesting.
.3 - .2 - .1 != 0
but
.2 - .1 - .1 = 0
then I began to run some other tests and I found out that only .3 and .8 are the only numbers that you use that'll not get you a 0 answer. If you take:
.4 - .2 - .1 - .1 = 0
and
.9 -.2 -.1 -.1 -.1 -.2 -.1 -.1 = 0
If you change any of the .2's to two - .1's you don't get 0. So what’s so special about those 2 decimals that make them the only ones that don't work with basic subtraction?
0 Comments
Accepted Answer
  Matt J
      
      
 on 9 Nov 2012
        
      Edited: Matt J
      
      
 on 9 Nov 2012
  
      What makes them special? Nothing. There are lots more numbers like that
    >> isequal(0, .7 - .5 - .2)
    ans =
         0
It also depends on the operation you do. Sometimes 0.3 will work fine, e.g.,
    >> isequal(0, .6 - .3 -.3)
    ans =
         1
2 Comments
  Matt Fig
      
      
 on 9 Nov 2012
				It is not just in MATLAB.  ALL numerical systems that follow IEEE 754 will behave this way. That is the standard.
More Answers (1)
  Thomas
      
 on 9 Nov 2012
        
      Edited: Thomas
      
 on 9 Nov 2012
  
      This should answer your question. Look at the wiki under the section Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero? (might have to scroll on the page to locate...)
2 Comments
  Dr. Seis
      
 on 9 Nov 2012
				
      Edited: Dr. Seis
      
 on 9 Nov 2012
  
			I had similar issues when doing mod(0.4,0.4) and mod(0.8,0.4) returning a number slightly smaller than 0.4 instead of 0. Whenever I do these types of comparisons in the future I will need to overload the builtin functions.
See this for example: http://www.mathworks.com/matlabcentral/answers/49910-mod-bug-or-something-else
  Oleg Komarov
      
      
 on 9 Nov 2012
				@Lucas, if you already know that you wouldn't be asking the question in the first place. I recommend to read the FAQ more carefully.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





