float_t, double_t

< c‎ | numeric‎ | math


在标头 <math.h> 定义
typedef /* 由实现定义 */ float_t
(C99 起)
typedef /* 由实现定义 */ double_t
(C99 起)

float_tdouble_t 类型分别是至少与 floatdouble 一样宽的浮点类型,并满足 double_t 至少与 float_t 一样宽。FLT_EVAL_METHOD 的值确定 float_tdouble_t 的类型。

FLT_EVAL_METHOD 解释
0 float_tdouble_t 分别等价于 floatdouble
1 float_tdouble_t 都等价于 double
2 float_tdouble_t 都等价于 long double
其他 float_tdouble_t 均为实现定义

示例

#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;
}

可能的输出:

0
4  4
8  8

引用

  • C11 标准(ISO/IEC 9899:2011):
  • 7.12 Mathematics <math.h> (第 231 页)
  • C99 标准(ISO/IEC 9899:1999):
  • 7.12 Mathematics <math.h> (第 212 页)

参阅

在中间结果上使用扩展精度:0 不用,1 用 double 代替 float,2 使用 long double
(宏常量)