# C++ Floating-Point Constants

Floating-point constants specify values that must have a fractional part. These values contain decimal points (**.**) and can contain exponents.

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
```

The exponent may be specified using **e** or **E**, which have the same meaning, followed by an optional sign (+ or -) and a sequence of digits. 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.

Although long double and **double** have the same representation, they are not the same type. For example, you can have overloaded functions like

```
void func( double );
```

and

```
void func( long double );
```