float_t, double_t

来自cppreference.com
< c‎ | numeric‎ | math


 
 
 
常用数学函数
类型
(C99)(C99)    

float_tdouble_t
(C99)(C99)    

函数
基本运算
(C99)
(C99)
(C99)
(C99)(C99)(C99)(C23)
最大/最小运算
(C99)
(C23)    
指数函数
(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)
(C99)
(C99)(C99)(C99)
(C23)(C23)(C23)(C23)
浮点操作函数
(C99)(C99)
(C99)(C23)
(C99)
窄化运算
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
量与量指数函数
十进制重编码函数
全序与载荷函数
分类
(C99)
(C99)
(C99)
(C23)
宏常量
特殊浮点值
(C99)(C23)
参数与返回值
(C99)(C99)(C99)(C99)(C99)    
错误处理
(C99)    

 
在标头 <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
(宏常量)