命名空间
变体
操作

fpclassify

来自 cppreference.cn
< c‎ | 数值‎ | 数学
 
 
 
常用数学函数
函数
基本操作
(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
(函数宏) [编辑]
检查给定数字是否为正常数
(函数宏) [编辑]