fixing precision using float.h limits, since FLT_DECIMAL_DIG is not available in C89, hardcoding the values, they dont change