命名空间
变体
操作

float_t, double_t

来自 cppreference.cn
< c‎ | numeric‎ | math
 
 
 
常用数学函数
函数
基本运算
(C99)
(C99)
(C99)
(C99)(C99)(C99)(C23)
最大值/最小值运算
(C99)
(C99)
指数函数
(C23)
(C99)
(C99)
(C23)
(C23)

(C99)
(C99)(C23)
(C23)
(C23)
幂函数
(C99)
(C23)
(C23)

(C99)
(C23)
(C23)
三角函数和双曲函数
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
最近整数浮点数
(C99)(C99)(C99)
(C99)

(C99)(C99)(C99)
(C23)(C23)(C23)(C23)
浮点数操作
(C99)(C99)
(C99)(C23)
(C99)
窄化操作
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
量子和量子指数
十进制重新编码函数
总阶数和有效载荷函数
分类
(C99)
(C99)
(C99)
(C23)
误差函数和伽玛函数
(C99)
(C99)
(C99)
(C99)
类型
float_tdouble_t
(C99)(C99)
宏常量
特殊浮点数值
(C99)(C23)
参数和返回值
错误处理
快速操作指示符
 
定义于头文件 <math.h>
typedef /* implementation-defined */ float_t
(since C99)
typedef /* implementation-defined */ double_t
(since 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>
 
#define SHOW(expr) printf("%s = %d\n", #expr, (int)(expr))
 
int main()
{
    SHOW(FLT_EVAL_METHOD);
    SHOW(sizeof(float));
    SHOW(sizeof(float_t));
    SHOW(sizeof(double));
    SHOW(sizeof(double_t));
}

可能的输出

FLT_EVAL_METHOD = 1
sizeof(float) = 4
sizeof(float_t) = 8
sizeof(double) = 8
sizeof(double_t) = 8

[编辑] 参考文献

  • C23 标准 (ISO/IEC 9899:2024)
  • 7.12 Mathematics <math.h> (p: TBD)
  • C17 标准 (ISO/IEC 9899:2018)
  • 7.12 Mathematics <math.h> (p: TBD)
  • C11 标准 (ISO/IEC 9899:2011)
  • 7.12 Mathematics <math.h> (p: 231)
  • C99 标准 (ISO/IEC 9899:1999)
  • 7.12 Mathematics <math.h> (p: 212)

[编辑] 参见

指定所有算术运算的精度
(宏常量)