From the printf manual:
"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."
I don't mean to "RTFM", but you'll probably find what you're looking for in the manual sections on controlling precision and length.