# C++ Floating-Point Constants

**Visual Studio 2008**

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 );