# 5 Lexical conventions [lex]

## 5.13 Literals [lex.literal]

### 5.13.4 Floating-point literals [lex.fcon]

```floating-point-literal:
decimal-floating-point-literal
```
```decimal-floating-point-literal:
fractional-constant exponent-partopt floating-point-suffixopt
digit-sequence exponent-part floating-point-suffixopt
```
```hexadecimal-floating-point-literal:
```
```fractional-constant:
digit-sequenceopt . digit-sequence
digit-sequence .
```
```hexadecimal-fractional-constant:
```
```exponent-part:
e signopt digit-sequence
E signopt digit-sequence
```
```binary-exponent-part:
p signopt digit-sequence
P signopt digit-sequence
```
```sign: one of
+  -
```
```digit-sequence:
digit
digit-sequence 'opt digit
```
```floating-point-suffix: one of
f  l  F  L
```
The type of a floating-point-literal is determined by its floating-point-suffix as specified in Table 10.
Table 10: Types of floating-point-literals   [tab:lex.fcon.type]
 floating-point-suffix type none double f or F float l or L long double
In the significand, the sequence of digits or hexadecimal-digits and optional period are interpreted as a base N real number s, where N is 10 for a decimal-floating-point-literal and 16 for a hexadecimal-floating-point-literal.
Note
:
Any optional separating single quotes are ignored when determining the value.
— end note
]
If an exponent-part or binary-exponent-part is present, the exponent e of the floating-point-literal is the result of interpreting the sequence of an optional sign and the digits as a base 10 integer.
Otherwise, the exponent e is 0.
The scaled value of the literal is for a decimal-floating-point-literal and for a hexadecimal-floating-point-literal.
Example
:
The floating-point-literals 49.625 and 0xC.68p+2 have the same value.
The floating-point-literals 1.602'176'565e-19 and 1.602176565e-19 have the same value.
— end example
]
If the scaled value is not in the range of representable values for its type, the program is ill-formed.
Otherwise, the value of a floating-point-literal is the scaled value if representable, else the larger or smaller representable value nearest the scaled value, chosen in an implementation-defined manner.