In response to 3010*1.15: 1.15 is not a number that can be represented exactly in base-2, or as a sum of 1/(2**n) factors. Because of that, you will necessarily (given no access to a fractional number library of some sort) need to approximate the value when stored as a floating point. This is why your rounding looks weird. The closest you are able to get is:
1 + (1/8) + (1/64) + (1/128) + (1/1024) + (1/2048) ...
This basically goes for a ReallyLongTime™. Printf rounds to a specific number of digits unless told otherwise, as tye and others have illustrated. What Every Computer Scientist Should Know About Floating Point is a better explanation of this than I have time to give here, and should be required reading for any programming course dealing with numerical representation in hardware.