header

<cfloat> (float.h)

Characteristics of floating-point types
This header describes the characteristics of floating types for the specific system and compiler implementation used.

A floating-point number is composed of four elements:
  • a sign: either negative or non-negative
  • a base (or radix): which expresses the different numbers that can be represented with a single digit (2 for binary, 10 for decimal, 16 for hexadecimal, and so on...)
  • a significand (or mantissa): which is a series of digits of the aforementioned base. The number of digits in this series is what is known as precision.
  • an exponent (also known as characteristic, or scale): which represents the offset of the significand, affecting the value in the following way:
    value of floating-point = significand x baseexponent, with its corresponding sign.

Macro constants

The following panel shows the name of the different values defined in this header and their minimal or maximal values for all implementations (particula rimplementations may have values greater or smaller, as specified):

When a group of macros exists prefixed by FLT_, DBL_ and LDBL_, the one beginning with FLT_ applies to the float type, the one with DBL_ to double and the one with LDBL_ to long double.

namevaluestands forexpresses
FLT_RADIX
2 or greater    
RADIXBase for all floating-point types (float, double and long double).
FLT_MANT_DIG
DBL_MANT_DIG
LDBL_MANT_DIG
MANTissa DIGitsPrecision of significand, i.e. the number of digits that conform the significand.
FLT_DIG
DBL_DIG
LDBL_DIG
6 or greater
10 or greater
10 or greater
DIGitsNumber of decimal digits that can be rounded into a floating-point and back without change in the number of decimal digits.
FLT_MIN_EXP
DBL_MIN_EXP
LDBL_MIN_EXP
MINimum EXPonentMinimum negative integer value for the exponent that generates a normalized floating-point number.
FLT_MIN_10_EXP
DBL_MIN_10_EXP
LDBL_MIN_10_EXP
-37 or smaller
-37 or smaller
-37 or smaller
MINimum base-10 EXPonentMinimum negative integer value for the exponent of a base-10 expression that would generate a normalized floating-point number.
FLT_MAX_EXP
DBL_MAX_EXP
LDBL_MAX_EXP
MAXimum EXPonentMaximum integer value for the exponent that generates a normalized floating-point number.
FLT_MAX_10_EXP
DBL_MAX_10_EXP
LDBL_MAX_10_EXP
37 or greater
37 or greater
37 or greater
MAXimum base-10 EXPonentMaximum integer value for the exponent of a base-10 expression that would generate a normalized floating-point number.
FLT_MAX
DBL_MAX
LDBL_MAX
1E+37 or greater
1E+37 or greater
1E+37 or greater
MAXimumMaximum finite representable floating-point number.
FLT_EPSILON
DBL_EPSILON
LDBL_EPSILON
1E-5 or smaller
1E-9 or smaller
1E-9 or smaller
EPSILONDifference between 1 and the least value greater than 1 that is representable.
FLT_MIN
DBL_MIN
LDBL_MIN
1E-37 or smaller
1E-37 or smaller
1E-37 or smaller
MINimumMinimum representable floating-point number.
FLT_ROUNDSROUNDRounding behavior. Possible values:
-1 undetermined
 0 toward zero
 1 to nearest
 2 toward positive infinity
 3 toward negative infinity
Applies to all floating-point types (float, double and long double).
FLT_EVAL_METHODEVALuation METHODProperties of the evaluation format. Possible values:
-1 undetermined
 0 evaluate just to the range and precision of the type
 1 evaluate float and double as double, and long double as long double.
 2 evaluate all as long double Other negative values indicate an implementation-defined behavior.
Applies to all floating-point types (float, double and long double).
DECIMAL_DIGDECIMAL DIGitsNumber of decimal digits that can be rounded into a floating-point type and back again to the same decimal digits, without loss in precision.

Compatibility

FLT_EVAL_METHOD and DECIMAL_DIG are defined for libraries complying with the C standard of 1999 or later (which only includes the C++ standard since 2011: C++11).

See also