Floating point values are not precise. They are binary fraction approximations instead; e.g. the computer adds up 1/2 + 1/4 + 1/8, etc. (but picking those fractions based on your actual value), adding those up to approximate the decimal value. A float value can simply not represent the value 11223.512512 precisely. This is the price of hardware-acceleration support; float operations are extremely fast, and usually precise enough.
Don't use float values if precision is important; use the decimal.Decimal() type instead. Or decide on how many digits you want to represent when printing, and format your floating point values with format():
print format(a_float(s), '.6f')
I recommend you read the Floating Point Arithmetic: Issues and Limitations chapter of the Python tutorial for more details.
float: getting fast and correct decimal-to-binary conversions is hard!