Two things:
floating point numbers do not always represent a given number exactly - which you are encountering - the 0.0099998 result from division.
limits.h defines the limit of precision for each datatype, and the smallest number that can be represented. Implementations vary. FLT_DIG - the number of significant digits in a float is defined to be at least 6 for
POSIX, FLT_MIN <= 10^-38.