The conversion is usually done by gconvert(), gcvt() or printf with %g format, depending on what Configure determined and, for example, on CentOS5 the %g format is described as:
The double argument is converted in style f or e (or F or E for G conversions). The precision specifies the number of significant digits. If the precision is missing, 6 digits are given; if the precision is zero, it is treated as 1. Style e is used if the exponent from its conversion is less than -4 or greater than or equal to the precision. Trailing zeros are removed from the fractional part of the result; a decimal point appears only if it is followed by at least one digit.
The emphasis is mine. This is consistent with the result you are seeing.