Floating-Point Conversions Next: Previous: Integer Conversions Up: C-Style I/O Functions



Floating-Point Conversions

This section discusses the conversion specifications for floating-point numbers: the %f %e, %E, %g, and %G conversions.

The %f conversion prints its argument in fixed-point notation producing output of the form [-]ddd.ddd where the number of digits following the decimal point is controlled by the precision you specify.

The %e conversion prints its argument in exponential notation producing output of the form [-]d.ddde[+|-]dd. Again the number of digits following the decimal point is controlled by the precision. The exponent always contains at least two digits. The %E conversion is similar but the exponent is marked with the letter E instead of e.

The %g and %G conversions print the argument in the style of %e or %E (respectively) if the exponent would be less than -4 or greater than or equal to the precision; otherwise they use the %f style. Trailing zeros are removed from the fractional portion of the result and a decimal-point character appears only if it is followed by a digit.

The following flags can be used to modify the behavior:

-
Left-justify the result in the field. Normally the result is right-justified.
+
Always include a plus or minus sign in the result.
If the result doesn't start with a plus or minus sign prefix it with a space instead. Since the + flag ensures that the result includes a sign this flag is ignored if you supply both of them.
#
Specifies that the result should always include a decimal point even if no digits follow it. For the %g and %G conversions this also forces trailing zeros after the decimal point to be left in place where they would otherwise be removed.
0
Pad the field with zeros instead of spaces; the zeros are placed after any sign. This flag is ignored if the - flag is also specified.

The precision specifies how many digits follow the decimal-point character for the %f %e, and %E conversions. For these conversions the default precision is 6. If the precision is explicitly 0 this suppresses the decimal point character entirely. For the %g and %G conversions the precision specifies how many significant digits to print. Significant digits are the first digit before the decimal point and all the digits after it. If the precision is 0 or not specified for %g or %G it is treated like a value of 1. If the value being printed cannot be expressed precisely in the specified number of digits the value is rounded to the nearest number that fits.