This is not a bug but a limitation on binary-based floating point arithmetic. Internally MS, like most other applications, uses base 2 floating point numbers to represent the base-10 numbers you have entered, Now numbers in front of the decimal point are easily converted to binary numbers since they are both from sums of products of integers. However, numbers behind the decimal point are really sums of fractions and can often times not be represented exactly by a finite length binary number. For example, 0.5 = 1/2 = 2^-1 can be represented exactly in binary. But 0.6 = 1/6 = 0.101010101010... of infinite length.
So when you manipulate floating point numbers, there is bound to be a small amount of round-off/err in the answers. This is true of MS and floating point computations computers in general.
You can try the same thing in matlab and see the same sort of effect
ans = -9.0949e-13