宏/函数
cmathctgmath
fpclassify
C99
宏
fpclassify(x)
C++11
函数
intfpclassify(floatx);
intfpclassify(doublex);
intfpclassify(longdoublex);
分类浮点值
返回一个int类型的值,该值与分类宏常量之一匹配,取决于x的值:
value description
FP_INFINITE Positiveornegativeinfinity(overflow)(正无穷或负无穷(上溢))
FP_NAN Not-A-Number(不是一个数)
FP_ZERO Valueofzero(0值)
FP_SUBNORMAL Sub-normalvalue(underflow)(低于正常值(下溢))
FP_NORMAL Normalvalue(noneoftheabove)(正常值(不是上面的任何一个))
注意,每个值都属于一个类别:0不是一个正常值。
这些int类型的宏常量定义在头文件cmath(math.h)中。
C99
在C语言中,这是作为宏实现的,但x的类型应该是float、double或longdouble。
C++11
在C++中,它是通过每个浮点类型(floating-pointtype)的函数重载来实现的。
参数
x
分类的值。
返回值
以下int值之一:FP_INFINITE,FP_NAN,FP_ZERO,FP_SUBNORMAL或FP_NORMAL。
用例
/*fpclassifyexample*/
#includestdio.h/*printf*/
#includemath.h/*fpclassify,signbit,FP_**/
intmain()
{
doubled=1.0/0.0;
switch(fpclassify(d)){
caseFP_INFINITE:printf("infinite");break;
caseFP_NAN:printf("NaN");break;
caseFP_ZERO:printf("zero");break;
caseFP_SUBNORMAL:printf("subnormal");break;
caseFP_NORMAL:printf("normal");break;
}
if(signbit(d))printf("negative\n");
elseprintf("positiveorunsigned\n");
return0;
}
输出:
————————————————
版权声明:本文为CSDN博主「weixin_」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接: