C  <float.h>
The C <float.h> header file describes the characteristics of floating types. It contains platformdependent and implementationspecific floating point values. A floatingpoint value consist of four parts:
 Sign: It can be either negative or nonnegative.
 Base: It is also known as radix of the exponent representation, 2 for binary, 10 for decimal, 16 for hexadecimal, and so on...
 Significand: It is also known as mantissa which is a series of digits of the base. The number of digits in this series is known as precision.
 Exponent: It is also known as characteristic or scale, which represents the offset of the significand.
Based on the above four parts, a floating value can be expressed as follows:
value of floatingpoint = ± significand x base^{exponent}
C <float.h> Macro Constants
The below mentioned macros are implementationspecific and defined with the #define directive. The below table shows the different macros in <float.h> header and their minimal or maximal values in all implementations. In all instances it represents the following:
 FLT: refers float
 DBL: refers double
 LDBL: refers long double
 DIG: refers digits
 MAX: refers maximum
 MIN: refers minimum
 MANT: refers mantissa
Macro  Description 

FLT_RADIX  Radix (integer base) used by the representation of all three floatingpoint types (float, double and long double). Minimum value is 2. 
FLT_MANT_DIG DBL_MANT_DIG LDBL_MANT_DIG 
Number of base FLT_RADIX digits that can be represented without losing precision for float, double and long double respectively. 
FLT_DIG DBL_DIG LDBL_DIG 
Number of decimal digits that can be rounded into a floatingpoint and back again to the same decimal digits, without loss of precision. It is defined as AT LEAST 6, 10 and 10 digits for float, double and long double respectively. 
FLT_MAX DBL_MAX LDBL_MAX 
Maximum finite value of float, double and long double respectively. Minimum value is 10^{37}. 
FLT_MIN DBL_MIN LDBL_MIN 
Minimum finite value of float, double and long double respectively. Maximum value is 10^{37}. 
FLT_MAX_EXP DBL_MAX_EXP LDBL_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. 
FLT_MIN_EXP DBL_MIN_EXP LDBL_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. 
FLT_MAX_10_EXP DBL_MAX_10_EXP LDBL_MAX_10_EXP 
Maximum positive integer such that 10 raised to that power is a representable finite float, double and long double respectively. Minimum value is 37. 
FLT_MIN_10_EXP DBL_MIN_10_EXP LDBL_MIN_10_EXP 
Minimum negative integer such that 10 raised to that power is a normalized float, double and long double respectively. Maximum value is 37. 
FLT_EPSILON DBL_EPSILON LDBL_EPSILON 
Difference between 1.0 and the next representable value for float, double and long double respectively. Maximum values are 10^{5}, 10^{9} and 10^{9} for float, double and long double respectively. 
FLT_ROUNDS  Default rounding behavior. Possible values are:

FLT_EVAL_METHOD  Specifies the evaluation format of arithmetic operations. Possible values are:

DECIMAL_DIG  Number of decimal digits that can be rounded into a floatingpoint type and back again to the same decimal digits, without loss in precision. 
FLT_TRUE_MIN DBL_TRUE_MIN LDBL_TRUE_MIN 
Minimum positive value of float, double and long double respectively. 
Example:
The below example describes the working of macros constant of C <float.h> library.
#include <stdio.h> #include <float.h> int main (){ printf("FLT_RADIX: %i\n", FLT_RADIX); printf("FLT_DIG: %i\n", FLT_DIG); printf("FLT_MAX: %e\n", FLT_MAX); printf("FLT_MIN: %e\n", FLT_MIN); printf("FLT_MAX_EXP: %i\n", FLT_MAX_EXP); printf("FLT_MIN_EXP: %i\n", FLT_MIN_EXP); printf("FLT_MAX_10_EXP: %i\n", FLT_MAX_10_EXP); printf("FLT_MIN_10_EXP: %i\n", FLT_MIN_10_EXP); printf("FLT_EPSILON: %e\n", FLT_EPSILON); printf("FLT_ROUNDS: %i\n", FLT_ROUNDS); printf("FLT_EVAL_METHOD: %i\n", FLT_EVAL_METHOD); return 0; }
The output of the above code is machine dependent. One of the possible output could be:
FLT_RADIX: 2 FLT_DIG: 6 FLT_MAX: 3.402823e+38 FLT_MIN: 1.175494e38 FLT_MAX_EXP: 128 FLT_MIN_EXP: 125 FLT_MAX_10_EXP: 38 FLT_MIN_10_EXP: 37 FLT_EPSILON: 1.192093e07 FLT_ROUNDS: 1 FLT_EVAL_METHOD: 0