2.4.5 Floating point literals

Floating point literals are described by the following lexical definitions:

floatnumber:    pointfloat | exponentfloat
pointfloat:     [intpart] fraction | intpart "."
exponentfloat:  (nonzerodigit digit* | pointfloat) exponent
intpart:        nonzerodigit digit* | "0"
fraction:       "." digit+
exponent:       ("e"|"E") ["+"|"-"] digit+

Note that the integer part of a floating point number cannot look like an octal integer, though the exponent may look like an octal literal but will always be interpreted using radix 10. For example, "1e010" is legal, while "07.1" is a syntax error. The allowed range of floating point literals is implementation-dependent. Some examples of floating point literals:

3.14    10.    .001    1e100    3.14e-10

Note that numeric literals do not include a sign; a phrase like -1 is actually an expression composed of the operator - and the literal 1.

See About this document... for information on suggesting changes.