Home C&C++函数库 c++ 语法 程序源码 Linux C库

fpclassify

函数,宏  <cmath> <ctgmath>

C99 macro: fpclassify(x)
C++11 function:
int fpclassify (float x);
int fpclassify (double x);
int fpclassify (long double x);

浮点值分类
返回一个int类型的值,该值匹配一个分类宏常量,具体取决于x的值:
value 说明
FP_INFINITE 正无穷或负无穷(溢出)
FP_NAN 非数
FP_ZERO 零值
FP_SUBNORMAL Sub-normal价值(下溢)
FP_NORMAL 正常值(以上都不是)

注意,每个值都属于一个类别:零不是一个标准值。

这些int类型的宏常量在头文件<cmath> (<tgmath.h>)中定义。
C99 在C语言中,这是一个宏实现的,但是x的类型应该是float, double或long double。
C++11 在c++中,它是通过对每个浮点类型的函数重载来实现的。

☲  参数


x
要分类的值。

☉  返回值



以下int值之一:FP_INFINITE, FP_NAN, FP_ZERO, FP_SUBNORMAL或FP_NORMAL。

☣  示例



/* fpclassify example */
#include <stdio.h>      /* printf */
#include <math.h>       /* fpclassify, signbit, FP_* */

int main()
{
  double d = 1.0 / 0.0;
  switch (fpclassify(d)) {
    case FP_INFINITE:  printf ("infinite");  break;
    case FP_NAN:       printf ("NaN");       break;
    case FP_ZERO:      printf ("zero");      break;
    case FP_SUBNORMAL: printf ("subnormal"); break;
    case FP_NORMAL:    printf ("normal");    break;
  }
  if (signbit(d)) printf (" negative\n");
  else printf (" positive or unsigned\n");
  return 0;
}

输出:
infinite positive or unsigned

🍄  另请参阅



isfinite 是否有限值(宏)
isinf 是不是无限的 (宏/函数)
isnan 是不是非数(宏/函数 )
isnormal 是不是正常的(宏/函数 )
signbit 符号位(宏/函数 )

联系我们 免责声明 关于CandCplus 网站地图