9.4.4.3 Real literals
Real literals are used to write values of types float, double, and decimal.
real-literal::
decimal-digits . decimal-digits exponent-partopt real-type-suffixopt
. decimal-digits exponent-partopt real-type-suffixopt
decimal-digits exponent-part real-type-suffixopt
decimal-digits real-type-suffix
exponent-part::
e signopt decimal-digits
E signopt decimal-digits
sign:: one of
+ -
Chapter 9 Lexical structure
59
real-type-suffix:: one of
F f D d M m
If no real-type-suffix is specified, the type of the real literal is double.
Otherwise, the real-type-suffix determines
the type of the real literal, as follows:
?A real literal suffixed by F or f is of type float. [Example: For
example, the literals 1f, 1.5f, 1e10f, and
123.456F are all of type float. end example]
?A real literal suffixed by D or d is of type double. [Example: For
example, the literals 1d, 1.5d, 1e10d, and
123.456D are all of type double. end example]
?A real literal suffixed by M or m is of type decimal. [Example: For
example, the literals 1m, 1.5m, 1e10m,
and 123.456M are all of type decimal. end example] This literal is
converted to a decimal value by taking
the exact value, and, if necessary, rounding to the nearest representable
value using banker抯 rounding
(?1.1.6). Any scale apparent in the literal is preserved unless the value
is rounded or the value is zero (in
which latter case the sign and scale will be 0). [Note: Hence, the literal
2.900m will be parsed to form the
decimal with sign 0, coefficient 2900, and scale 3. end note]
If the specified literal cannot be represented in the indicated type, a
compile-time error occurs.
The value of a real literal having type float or double is determined by
using the IEC 60559 .round to
nearest. mode.