No, it's probably a little of both. The biggest thing to remember about floats is that they are not exact - they give you a representation of the nearest binary match to the number you actually need. For example, in the same way that one-third can't be represented as a decimal, binary can't represent 0.1 exactly.
Certain C and C++ library functions have been designed to fiddle with the numbers you give them to make them more palatable:
char Buffer[20];
sprintf(Buffer, "%7.4f", 36.0f - 0.2f);
dbWriteToClipboard(Buffer);
The 7 represents the total number of characters in the number (including the decimal point) and the 4 represents the number of digits after the decimal point.