📅  最后修改于: 2023-12-03 14:59:35.932000             🧑  作者: Mango
fpclassify()
是C/C++中定义在math.h头文件中的一个函数,用于判断浮点数的类型。
该函数接受一个浮点数作为参数,返回值是一个整数,代表该浮点数的类型。
fpclassify()
的返回值代表的类型如下:
|返回值|代表的类型| |--|--| |FP_NAN|无穷大(INF)、NaN(不是数字)| |FP_INFINITE|正无穷,负无穷| |FP_ZERO|0| |FP_SUBNORMAL|接近0,但不为0的很小的数| |FP_NORMAL|既不是无穷大也不是0的数|
#include <cmath>
#include <iostream>
using namespace std;
int main()
{
double num1 = 1.0 / 0.0;
double num2 = 0.0 / 0.0;
double num3 = 1e-300;
cout << "num1: ";
switch(fpclassify(num1))
{
case FP_NAN:
cout << "NaN" << endl;
break;
case FP_INFINITE:
cout << "infinite" << endl;
break;
case FP_ZERO:
cout << "zero" << endl;
break;
case FP_SUBNORMAL:
cout << "subnormal" << endl;
break;
case FP_NORMAL:
cout << "normal" << endl;
break;
}
cout << "num2: ";
switch(fpclassify(num2))
{
case FP_NAN:
cout << "NaN" << endl;
break;
case FP_INFINITE:
cout << "infinite" << endl;
break;
case FP_ZERO:
cout << "zero" << endl;
break;
case FP_SUBNORMAL:
cout << "subnormal" << endl;
break;
case FP_NORMAL:
cout << "normal" << endl;
break;
}
cout << "num3: ";
switch(fpclassify(num3))
{
case FP_NAN:
cout << "NaN" << endl;
break;
case FP_INFINITE:
cout << "infinite" << endl;
break;
case FP_ZERO:
cout << "zero" << endl;
break;
case FP_SUBNORMAL:
cout << "subnormal" << endl;
break;
case FP_NORMAL:
cout << "normal" << endl;
break;
}
return 0;
}
在上面的示例中,我们分别定义了一个无穷大的数num1,一个 NaN 的数num2和一个接近0但不为0的很小的数num3,并使用fpclassify()
函数分别判断它们的类型,并输出结果。
输出结果如下:
num1: infinite
num2: NaN
num3: subnormal
从输出结果可以看出,num1是一个无穷大的数,因此返回“infinite”;num2是一个 NaN 的数,因此返回“NaN”;而num3虽然很小,但不为0,因此返回“subnormal”。