This a common error to all calculation dealing with double precision IEEE754 representation and not specific to matlab.
As you know the calculation is done internally in binary (base 2) and displayed in base 10. A conversion between base 2 and base 10 is always done. When dealing with fractionnal numbers (>1), the conversion can not be exact and an error will rise. The algorithm has to do a rounding.
In double precision the number of significant digits is 16. So the last digit in your case is incorrect because of the conversion; it is equal to 3 insteed of 0.