Strange arithmetic is AS 3.0?

I’m confused. In a function I’m running, there are these two steps:

                            fade3.scaleX -=0.01;
			trace(fade3.scaleX);

So, I’m puzzled that the trace reads out like this, with nice even numbers, but then giving way to wildly uneven numbers with a lot of decimal places :

0.64
0.63
0.62
0.61
0.6
0.59
0.58
0.57
0.5599999999999999
0.5499999999999999
0.5399999999999999
0.5299999999999999
0.5199999999999999
0.5099999999999999
0.49999999999999983
0.4899999999999999