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 |

#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

- 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)

(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) |

© cppreference.com

Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.

https://en.cppreference.com/w/c/numeric/math/float_t