Floating-Point Conversions Next: Other Output Conversions Previous: Integer Conversions Up: C-Style I/O Functions
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:
-
+
+
flag ensures that the result includes
a sign this flag is ignored if you supply both of them.
#
%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
-
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.