命名空间
变体
操作

fpclassify

来自 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)
量子和量子指数
十进制重编码函数
总序和有效载荷函数
分类
fpclassify
(C99)
(C99)
(C99)
(C99)
(C23)
误差和伽马函数
(C99)
(C99)
(C99)
(C99)
类型
宏常量
特殊浮点数值
(C99)(C23)
参数和返回值
错误处理
快速操作指示符
 
定义于头文件 <math.h>
#define fpclassify(arg) /* implementation defined */
(C99 起)

将浮点数值 arg 归类为以下类别之一:零、次正规、正规、无穷大、NAN 或实现定义的类别。该宏返回一个整数值。

FLT_EVAL_METHOD 会被忽略:即使参数以超出其类型的范围和精度进行求值,它也会首先转换为其语义类型,并且分类基于该类型:一个正规的 long double 值在转换为 double 时可能变为次正规,而在转换为 float 时可能变为零。

目录

[编辑] 参数

arg - 浮点数值

[编辑] 返回值

以下之一:FP_INFINITEFP_NANFP_NORMALFP_SUBNORMALFP_ZERO 或实现定义的类型,指定 arg 的类别。

[编辑] 示例

#include <float.h>
#include <math.h>
#include <stdio.h>
 
const char* show_classification(double x)
{
    switch(fpclassify(x))
    {
        case FP_INFINITE:  return "Inf";
        case FP_NAN:       return "NaN";
        case FP_NORMAL:    return "normal";
        case FP_SUBNORMAL: return "subnormal";
        case FP_ZERO:      return "zero";
        default:           return "unknown";
    }
}
 
int main(void)
{
    printf("1.0/0.0 is %s\n", show_classification(1 / 0.0));
    printf("0.0/0.0 is %s\n", show_classification(0.0 / 0.0));
    printf("DBL_MIN/2 is %s\n", show_classification(DBL_MIN / 2));
    printf("-0.0 is %s\n", show_classification(-0.0));
    printf("1.0 is %s\n", show_classification(1.0));
}

输出

1.0/0.0 is Inf
0.0/0.0 is NaN
DBL_MIN/2 is subnormal
-0.0 is zero
1.0 is normal

[编辑] 参考

  • C23 标准 (ISO/IEC 9899:2024)
  • 7.12.3.1 fpclassify 宏 (p: TBD)
  • C17 标准 (ISO/IEC 9899:2018)
  • 7.12.3.1 fpclassify 宏 (p: TBD)
  • C11 标准 (ISO/IEC 9899:2011)
  • 7.12.3.1 fpclassify 宏 (p: 235)
  • C99 标准 (ISO/IEC 9899:1999)
  • 7.12.3.1 fpclassify 宏 (p: 216)

[编辑] 参见

检查给定的数值是否为有限值
(函数宏) [编辑]
(C99)
检查给定的数值是否为无穷大
(函数宏) [编辑]
(C99)
检查给定的数值是否为 NaN
(函数宏) [编辑]
检查给定的数值是否为正规
(函数宏) [编辑]
C++ 文档 关于 fpclassify