Floating-point constants specify values that must have a fractional part. These values contain decimal points (.) and may contain exponents.
floating-constant:
fractional-constant exponent-partoptfloating-suffixopt
digit-sequence exponent-part floating-suffixopt
fractional-constant:
digit-sequenceopt. digit-sequence
digit-sequence.
exponent-part:
e signoptdigit-sequence
E signoptdigit-sequence
sign: one of
+ –
digit-sequence:
digit
digit-sequence digit
floating-suffix: one of
f l F L
Floating-point constants have a “mantissa,” which specifies the value of the number, an “exponent,” which specifies the magnitude of the number, and an optional suffix that specifies the constant's type. The mantissa is specified as a sequence of digits followed by a period, followed by an optional sequence of digits representing the fractional part of the number. For example:
18.46
38.
The exponent, if present, specifies the magnitude of the number as a power of 10, as shown in the following example:
18.46e0// 18.46
18.46e1// 184.6
If an exponent is present, the trailing decimal point is unnecessary in whole numbers such as 18E0.
Floating-point constants default to type double. By using the suffixes f or l (or F or L—the suffix is not case sensitive), the constant can be specified as float or long double, respectively.