# float (C++)

From Just Solve the File Format Problem

C++ **float** is the smallest possible floating point data type available. Unlike many other languages C++ doesn't use **float** as the default floating point, see double for that.

It is not possible to enumerate **float** values, and thus it cannot be used in constructs like `switch`

.

## Literals

Literals that need to be differentiated from double must be followed by f or F.

float a = 1.5; // This is a double that gets converted into a float float b = 1.5f; // This is a float that gets stored in a float

Besides that float can store positive infinity, negative infinity, and NaN (not a number). NaN is generated when the result is mathematically ambiguous or impossible to determine, for example 0รท0.

## Characteristics

The <cfloat> library consists of the following constants describing the behaviour of **float**

- FLT_RADIX — base of the floating point numbers.
- FLT_MANT_DIG — number of mantissa digits.
- FLT_DIG — number of significant digits that can be stored.
- FLT_MIN_EXP — minimum negative exponent.
- FLT_MAX_EXP — maximum positive exponent.
- FLT_MIN_10_EXP — minimum base-10 negative exponent that can be transformed into a valid float
- FLT_MAX_10_EXP — maximum base-10 positive exponent that can be transformed into a valid float
- FLT_EPSILON — the difference from 1.0f to the smallest possible value that is greater than 1.0f
- FLT_MIN — the smallest possible value that is greater than 0.0f

## Other C++ data types storing floating point numbers

- double not less precise than float
- long double not less precise than double