It's a basic floating point maths problem.
Computers work with binary maths. For integer values, there's no problems. But for decimals it uses a technique called floating point maths. The trouble is that while floating points are good, the don't map directly to decimal values; even relatively simple decimal values may not be possible to represent precisely in binary.
If you're always working with two decimal places - eg for currencies - it is often a better idea to deal with your values as integers (eg store cents rather than dollars, or pence rather than pounds), so that all your maths is done using integers and the results will be accurate. You only need it as a decimal for display purposes, which you can do at the point when you need it.