# float_t, double_t

From cppreference.com
< c‎ | numeric‎ | math

Defined in header `<math.h>` |  |
typedef /*implementation defined*/ float_t |  | (since C99)
typedef /*implementation defined*/ double_t |  | (since C99)

The types float_t and double_t are floating types at least as wide as float and double, respectively, and such that double_t is at least as wide as float_t. The value of FLT_EVAL_METHOD determines the types of float_t and double_t.

FLT_EVAL_METHOD | Explanation
`0` | float_t and double_t are equivalent to float and double, respectively
`1` | both float_t and double_t are equivalent to double
`2` | both float_t and double_t are equivalent to long double
`other` | both float_t and double_t are implementation defined

### Example

Run this code

    #include <float.h>
    #include <math.h>
    #include <stdio.h>

    int main(void)
    {
        printf("%d\n", FLT_EVAL_METHOD);
        printf("%zu  %zu\n", sizeof(float),sizeof(float_t));
        printf("%zu  %zu\n", sizeof(double),sizeof(double_t));
        return 0;
    }

Possible output:

    0
    4  4
    8  8

### References

- C11 standard (ISO/IEC 9899:2011):

  - 7.12 Mathematics <math.h> (p: 231)

- C99 standard (ISO/IEC 9899:1999):

  - 7.12 Mathematics <math.h> (p: 212)

### See also

FLT_EVAL_METHOD (C99) | use of extended precision for intermediate results: 0 not used, 1 double is used instead of float, 2: long double is used (macro constant)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=c/numeric/math/float_t&oldid=134869"