It is because the nos are held as floating-point values. To force a decimal format with constant decial places use the number format function. Alternatively, store the nos as a decimal field in the db in the first place. If you are calculating these values in a script then the bcmaths functions will use decimal math and preserve the correct places. Otherwise maths tends to default to floating point arithmetic with all it's problems over precision.
It's a pain in the arse, but the computer scientists who design operating systems and programming languages love floating point. As a production programmer all the math I ever do is with money. And that is always decimal arithmetic. What I want is default decimal maths calculation and storage. If you ever add up a set of prices and then try to compare the result with one stored in the db you'll know exactly what I mean; how can adding 40 + 60 = 99.998359 ?? In floating point maths it can and does.