This should give some insight to Python specifically: http://docs.python.org/2/tutorial/floatingpoint.html
However the situation is the same in floating point calculations performed by your processor. Because of how floating point numbers are stored it is impossible to represent the entire continuum of all numbers exactly. When you perform the operation some of the extra "approximation" data at the end of the numbers, which you usually don't see in the output (it gets clipped out), creeps into your calculation. Note that 3.*-8./10.+0.6*4 gives a closer approximation to what you expect, likely because the approximations of 3.*8 and of 10 are closer to the real values than that of 0.8, so you end up with less accumulated error.
Python has a decimal library you can use which uses a different underlying representation, but unless you're only doing a few operations it's going to be slower. If it's more important to get "exact" numbers, then use one of those libraries, otherwise the floating point approximations is usually sufficient. You can find more information here: http://docs.python.org/2/tutorial/floatingpoint.html