命名空间
变体
操作

fpclassify

来自 cppreference.com
< c‎ | numeric‎ | math
 
 
 
常用数学函数
类型
(C99)(C99)    

(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)
量子和量子指数函数
十进制重新编码函数
全序和有效载荷函数
分类
fpclassify
(C99)
(C99)
(C99)
(C99)
(C23)
宏常量
特殊浮点值
(C99)(C23)
参数和返回值
(C99)(C99)(C99)(C99)(C99)    
错误处理
(C99)    

 
在头文件 <math.h> 中定义
#define fpclassify(arg) /* 实现定义 */
(自 C99 起)

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

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

内容

[编辑] 参数

arg - 浮点值

[编辑] 返回值

其中一个 FP_INFINITE, FP_NAN, FP_NORMAL, FP_SUBNORMAL, FP_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++ 文档 for fpclassify