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
🍄 另请参阅