◐ Shell
clean mode source ↗

Standard library header <cfloat> - cppreference.com

From cppreference.com

This header was originally in the C standard library as <float.h>.

This header is part of the type support library, in particular, it is a part of the C numeric limits interface.

Macros

Characteristics
default rounding mode of floating-point arithmetic
(macro constant) [edit]
specifies in what precision all arithmetic operations are done
(macro constant) [edit]

FLT_HAS_SUBNORMDBL_HAS_SUBNORMLDBL_HAS_SUBNORM

(C++17)(deprecated in C++26)

specifies whether the type supports subnormal (denormal) numbers:
-1 – indeterminable, 0 – absent, 1 – present
(macro constant) [edit]
the radix (integer base) used by the representation of all three floating-point types
(macro constant) [edit]

FLT_MANT_DIGDBL_MANT_DIGLDBL_MANT_DIG

number of base FLT_RADIX digits that can be represented without losing precision for float, double and long double respectively
(macro constant) [edit]

FLT_DECIMAL_DIGDBL_DECIMAL_DIGLDBL_DECIMAL_DIG

(C++17)

conversion from float/double/long double to decimal with at least FLT_DECIMAL_DIG/DBL_DECIMAL_DIG/LDBL_DECIMAL_DIG digits and back is the identity conversion: this is the decimal precision required to serialize/deserialize a floating-point value
(macro constant) [edit]

DECIMAL_DIG

(C++11)(deprecated in C++26)

conversion from long double to decimal with at least DECIMAL_DIG digits and back to long double is the identity conversion: this is the decimal precision required to serialize/deserialize a long double
(macro constant) [edit]

FLT_DIGDBL_DIGLDBL_DIG

number of decimal digits that are guaranteed to be preserved in text → float/double/long double → text roundtrip without change due to rounding or overflow
(macro constant) [edit]

FLT_MIN_EXPDBL_MIN_EXPLDBL_MIN_EXP

minimum negative integer such that FLT_RADIX raised by power one less than that integer is a normalized float, double and long double respectively
(macro constant) [edit]

FLT_MIN_10_EXPDBL_MIN_10_EXPLDBL_MIN_10_EXP

minimum negative integer such that 10 raised to that power is a normalized float, double and long double respectively
(macro constant) [edit]

FLT_MAX_EXPDBL_MAX_EXPLDBL_MAX_EXP

maximum positive integer such that FLT_RADIX raised by power one less than that integer is a representable finite float, double and long double respectively
(macro constant) [edit]

FLT_MAX_10_EXPDBL_MAX_10_EXPLDBL_MAX_10_EXP

maximum positive integer such that 10 raised to that power is a representable finite float, double and long double respectively
(macro constant) [edit]

FLT_MAXDBL_MAXLDBL_MAX

maximum finite value of float, double and long double respectively
(macro constant) [edit]

FLT_EPSILONDBL_EPSILONLDBL_EPSILON

difference between 1.0 and the next representable value for float, double and long double respectively
(macro constant) [edit]

FLT_MINDBL_MINLDBL_MIN

minimum normalized positive value of float, double and long double respectively
(macro constant) [edit]

FLT_TRUE_MINDBL_TRUE_MINLDBL_TRUE_MIN

(C++17)

minimum positive value of float, double and long double respectively
(macro constant) [edit]
Special values (since C++26)

(C++11)

evaluates to positive infinity (if exists)
(macro constant) [edit]

(C++11)

evaluates to a quiet NaN of type float (if exists)
(macro constant) [edit]
evaluates to a signaling NaN of float, double and long double respectively (if exists)
(macro constant) [edit]

Synopsis

// all freestanding
#define __STDC_VERSION_FLOAT_H__ 202311L

#define FLT_ROUNDS       /* see description */
#define FLT_EVAL_METHOD  /* see description */
#define FLT_RADIX        /* see description */
#define INFINITY         /* see description */
#define NAN              /* see description */
#define FLT_SNAN         /* see description */
#define DBL_SNAN         /* see description */
#define LDBL_SNAN        /* see description */
#define FLT_MANT_DIG     /* see description */
#define DBL_MANT_DIG     /* see description */
#define LDBL_MANT_DIG    /* see description */
#define FLT_DECIMAL_DIG  /* see description */
#define DBL_DECIMAL_DIG  /* see description */
#define LDBL_DECIMAL_DIG /* see description */
#define FLT_DIG          /* see description */
#define DBL_DIG          /* see description */
#define LDBL_DIG         /* see description */
#define FLT_MIN_EXP      /* see description */
#define DBL_MIN_EXP      /* see description */
#define LDBL_MIN_EXP     /* see description */
#define FLT_MIN_10_EXP   /* see description */
#define DBL_MIN_10_EXP   /* see description */
#define LDBL_MIN_10_EXP  /* see description */
#define FLT_MAX_EXP      /* see description */
#define DBL_MAX_EXP      /* see description */
#define LDBL_MAX_EXP     /* see description */
#define FLT_MAX_10_EXP   /* see description */
#define DBL_MAX_10_EXP   /* see description */
#define LDBL_MAX_10_EXP  /* see description */
#define FLT_MAX          /* see description */
#define DBL_MAX          /* see description */
#define LDBL_MAX         /* see description */
#define FLT_EPSILON      /* see description */
#define DBL_EPSILON      /* see description */
#define LDBL_EPSILON     /* see description */
#define FLT_MIN          /* see description */
#define DBL_MIN          /* see description */
#define LDBL_MIN         /* see description */
#define FLT_TRUE_MIN     /* see description */
#define DBL_TRUE_MIN     /* see description */
#define LDBL_TRUE_MIN    /* see description */

See also