# Why doesn't .3 - .2 - .1 = 0

4 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

### More Answers (1)

Thomas
on 9 Nov 2012

Edited: Thomas
on 9 Nov 2012

##### 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

### See Also

### Community Treasure Hunt

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

Start Hunting!