# <float.h>
<float.h>
# ``
* * *
Include the standard header **``**
to determine various properties of floating-point type representations.
The standard header `` is available even in a
[freestanding implementation](https://docs.qualcomm.com/doc/80-N3040-23/topic/c_lib_over.html#freestanding%20implementation).
You can test the values of any of the integer macros except
[`FLT_ROUNDS`](https://docs.qualcomm.com/doc/80-N3040-23/topic/c_float.html#FLT_ROUNDS) in an
[*if* directive](https://docs.qualcomm.com/doc/80-N3040-23/topic/c_preproc.html#if%20directive).
(The macros expand to
[*#if* expressions](https://docs.qualcomm.com/doc/80-N3040-23/topic/c_preproc.html#if%20expression).)
All other macros defined in this header expand to
[floating-point constant expressions](https://docs.qualcomm.com/doc/80-N3040-23/topic/c_express.html#floating-point%20constant%20expression).
Some target environments can change
the rounding and error-reporting properties of floating-point type
representations while the program is running.
#define FLT_RADIX <#if expression >= 2>
#define FLT_ROUNDS
#define FLT_EVAL_METHOD <#if expression> [added with C99]
#define DECIMAL_DIG <#if expression> >= 10 [added with C99]
#define DBL_DIG <#if expression >= 10>
#define DBL_EPSILON
#define DBL_MANT_DIG <#if expression>
#define DBL_MAX = 10^37>
#define DBL_MAX_10_EXP <#if expression >= 37>
#define DBL_MAX_EXP <#if expression>
#define DBL_MIN
#define DBL_MIN_10_EXP <#if expression <= -37>
#define DBL_MIN_EXP <#if expression>
#define FLT_DIG <#if expression >= 6>
#define FLT_EPSILON
#define FLT_MANT_DIG <#if expression>
#define FLT_MAX = 10^37>
#define FLT_MAX_10_EXP <#if expression >= 37>
#define FLT_MAX_EXP <#if expression>
#define FLT_MIN
#define FLT_MIN_10_EXP <#if expression <= -37>
#define FLT_MIN_EXP <#if expression>
#define LDBL_DIG <#if expression >= 10>
#define LDBL_EPSILON
#define LDBL_MANT_DIG <#if expression>
#define LDBL_MAX = 10^37>
#define LDBL_MAX_10_EXP <#if expression >= 37>
#define LDBL_MAX_EXP <#if expression>
#define LDBL_MIN
#define LDBL_MIN_10_EXP <#if expression <= -37>
#define LDBL_MIN_EXP <#if expression>Copy to clipboard
## `DBL_DIG`
#define DBL_DIG <#if expression >= 10>Copy to clipboard
The macro yields the precision in decimal digits for
type *double.*
## `DBL_EPSILON`
#define DBL_EPSILON Copy to clipboard
The macro yields the smallest *X* of type *double*
such that 1.0 + *X* != 1.0.
## `DBL_MANT_DIG`
#define DBL_MANT_DIG <#if expression>Copy to clipboard
The macro yields the number of mantissa digits, base
[`FLT_RADIX`](https://docs.qualcomm.com/doc/80-N3040-23/topic/c_float.html#FLT_RADIX),
for type *double.*
## `DBL_MAX`
#define DBL_MAX = 10^37>Copy to clipboard
The macro yields the largest finite representable value
of type *double.*
## `DBL_MAX_10_EXP`
#define DBL_MAX_10_EXP <#if expression >= 37>Copy to clipboard
The macro yields the maximum integer *X,* such that
10^*X* is a finite representable value of type *double.*
## `DBL_MAX_EXP`
#define DBL_MAX_EXP <#if expression>Copy to clipboard
The macro yields the maximum integer *X,* such that
[`FLT_RADIX`](https://docs.qualcomm.com/doc/80-N3040-23/topic/c_float.html#FLT_RADIX)^(*X* - 1)
is a finite representable value of type *double.*
## `DBL_MIN`
#define DBL_MIN Copy to clipboard
The macro yields the smallest normalized, finite representable
value of type *double.*
## `DBL_MIN_10_EXP`
#define DBL_MIN_10_EXP <#if expression <= -37>Copy to clipboard
The macro yields the minimum integer *X* such that
10^*X* is a normalized, finite representable value
of type *double.*
## `DBL_MIN_EXP`
#define DBL_MIN_EXP <#if expression>Copy to clipboard
The macro yields the minimum integer *X* such that
[`FLT_RADIX`](https://docs.qualcomm.com/doc/80-N3040-23/topic/c_float.html#FLT_RADIX)^(*X* - 1)
is a normalized, finite representable value of type *double.*
## `DECIMAL_DIG`
#define DECIMAL_DIG <#if expression >= 10> [added with C99]Copy to clipboard
The macro yields the minimum number of decimal digits needed to represent
all the significant digits for type *long double.*
## `FLT_DIG`
#define FLT_DIG <#if expression >= 6>Copy to clipboard
The macro yields the precision in decimal digits
for type *float.*
## `FLT_EPSILON`
#define FLT_EPSILON Copy to clipboard
The macro yields the smallest *X* of type *float*
such that 1.0 + *X* != 1.0.
## `FLT_EVAL_METHOD`
#define FLT_EVAL_METHOD <#if expression> [added with C99]Copy to clipboard
The macro yields a value that describes the evaluation
mode for floating-point operations. The values are:
- -1 if the mode is indeterminate
- 0 if no promotions occur
- 1 if *float* values promote to *double*
- 2 if *float* and *double* values promote to *long double*
An implementation can define additional negative values for this macro.
## `FLT_MANT_DIG`
#define FLT_MANT_DIG <#if expression>Copy to clipboard
The macro yields the number of mantissa digits, base
[`FLT_RADIX`](https://docs.qualcomm.com/doc/80-N3040-23/topic/c_float.html#FLT_RADIX),
for type *float.*
## `FLT_MAX`
#define FLT_MAX = 10^37>Copy to clipboard
The macro yields the largest finite representable value
of type *float.*
## `FLT_MAX_10_EXP`
#define FLT_MAX_10_EXP <#if expression >= 37>Copy to clipboard
The macro yields the maximum integer *X,* such that 10^*X*
is a finite representable value of type *float.*
## `FLT_MAX_EXP`
#define FLT_MAX_EXP <#if expression>Copy to clipboard
The macro yields the maximum integer *X,* such that
[`FLT_RADIX`](https://docs.qualcomm.com/doc/80-N3040-23/topic/c_float.html#FLT_RADIX)^(*X* - 1)
is a finite representable value of type *float.*
## `FLT_MIN`
#define FLT_MIN Copy to clipboard
The macro yields the smallest normalized, finite representable
value of type *float.*
## `FLT_MIN_10_EXP`
#define FLT_MIN_10_EXP <#if expression <= -37>Copy to clipboard
The macro yields the minimum integer *X,* such that 10^*X*
is a normalized, finite representable value of type *float.*
## `FLT_MIN_EXP`
#define FLT_MIN_EXP <#if expression>Copy to clipboard
The macro yields the minimum integer *X,* such that
[`FLT_RADIX`](https://docs.qualcomm.com/doc/80-N3040-23/topic/c_float.html#FLT_RADIX)^(*X* - 1)
is a normalized, finite representable value of type *float.*
## `FLT_RADIX`
#define FLT_RADIX <#if expression >= 2>Copy to clipboard
The macro yields the radix of all floating-point representations.
## `FLT_ROUNDS`
#define FLT_ROUNDS Copy to clipboard
The macro yields a value that describes the current rounding
mode for floating-point operations. Note that the target environment
can change the rounding mode while the program executes. How it does
so, however, is not specified. The values are:
- -1 if the mode is indeterminate
- 0 if rounding is toward zero
- 1 if rounding is to nearest representable value
- 2 if rounding is toward positive infinity
- 3 if rounding is toward negative infinity
An implementation can define additional values for this macro.
## `LDBL_DIG`
#define LDBL_DIG <#if expression >= 10>Copy to clipboard
The macro yields the precision in decimal digits for type *longdouble.*
## `LDBL_EPSILON`
#define LDBL_EPSILON Copy to clipboard
The macro yields the smallest *X* of type *long double*
such that 1.0 + *X* != 1.0.
## `LDBL_MANT_DIG`
#define LDBL_MANT_DIG <#if expression>Copy to clipboard
The macro yields the number of mantissa digits, base
[`FLT_RADIX`](https://docs.qualcomm.com/doc/80-N3040-23/topic/c_float.html#FLT_RADIX),
for type *long double.*
## `LDBL_MAX`
#define LDBL_MAX = 10^37>Copy to clipboard
The macro yields the largest finite representable value of type
*long double.*
## `LDBL_MAX_10_EXP`
#define LDBL_MAX_10_EXP <#if expression >= 37>Copy to clipboard
The macro yields the maximum integer *X,* such that
10^*X* is a finite representable value of type *long double.*
## `LDBL_MAX_EXP`
#define LDBL_MAX_EXP <#if expression>Copy to clipboard
The macro yields the maximum integer *X,* such that
[`FLT_RADIX`](https://docs.qualcomm.com/doc/80-N3040-23/topic/c_float.html#FLT_RADIX)^(*X* - 1)
is a finite representable value of type *long double.*
## `LDBL_MIN`
#define LDBL_MIN Copy to clipboard
The macro yields the smallest normalized, finite representable
value of type *long double.*
## `LDBL_MIN_10_EXP`
#define LDBL_MIN_10_EXP <#if expression <= -37>Copy to clipboard
The macro yields the minimum integer *X,* such that
10^*X* is a normalized, finite representable value
of type *long double.*
## `LDBL_MIN_EXP`
#define LDBL_MIN_EXP <#if expression>Copy to clipboard
The macro yields the minimum integer *X,* such that
[`FLT_RADIX`](https://docs.qualcomm.com/doc/80-N3040-23/topic/c_float.html#FLT_RADIX)^(*X* - 1)
is a normalized, finite representable value of type *long double.*
* * *
See also the
**[Table of Contents](https://docs.qualcomm.com/doc/80-N3040-23/topic/c_index.html#Table%20of%20Contents)** and the
**[Index](https://docs.qualcomm.com/doc/80-N3040-23/topic/_c_index.html)**.
*[Copyright](https://docs.qualcomm.com/doc/80-N3040-23/topic/c_crit_pjp.html) © 1992-2006by P.J. Plauger and Jim Brodie. All rights reserved.*
Last Published: Oct 06, 2026
Previous Topic
Next Topic