C++ Reference: Standard C++ Library reference: C Library: cmath: fpclassify

C++官网参考链接:https://cplusplus.com/reference/cmath/fpclassify/

宏/函数
<cmath> <ctgmath>
fpclassify
C99
宏    
fpclassify(x)
C++11
函数
int fpclassify(float x);
int fpclassify(double x);
int fpclassify(long double x);
分类浮点值 
返回一个int类型的值,该值与分类宏常量的一个匹配,取决于x的值:

valuedescription
FP_INFINITEPositive or negative infinity (overflow) (正无穷或负无穷(上溢))
FP_NANNot-A-Number (不是一个数)
FP_ZEROValue of zero (0值)
FP_SUBNORMALSub-normal value (underflow) (低于正常值(下溢))
FP_NORMALNormal value (none of the above) (正常值(不是上面的任何一个))

注意,每个值都属于一个类别:0不是一个正常值。
这些int类型的宏常量定义在头文件<cmath><math.h>)中。 
C99
在C语言中,这是作为宏实现的,但x的类型应该是float、double或long double。
C++11
在C++中,它是通过每个浮点类型(floating-point type)的函数重载来实现的。

形参
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;
}
输出:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_40186813

你的能量无可限量。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值