📅  最后修改于: 2023-12-03 15:13:55.645000             🧑  作者: Mango
在C++中,我们可以使用math库提供的fpclassify()函数来判断浮点数的特殊情况,例如是否为NaN(非数值)、正无穷、负无穷等。
fpclassify()函数的原型如下:
int std::fpclassify(float arg);
int std::fpclassify(double arg);
int std::fpclassify(long double arg);
该函数的参数为要判断的浮点数,返回值为下列值之一:
示例代码:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double x = 1.0/0.0; //正无穷
double y = -1.0/0.0; //负无穷
double z = 0.0/0.0; //NaN
double w = 1.0; //规格化数
double v = 1e-308; //非规格化数
cout << "fpclassify(x) = " << fpclassify(x) << endl;
cout << "fpclassify(y) = " << fpclassify(y) << endl;
cout << "fpclassify(z) = " << fpclassify(z) << endl;
cout << "fpclassify(w) = " << fpclassify(w) << endl;
cout << "fpclassify(v) = " << fpclassify(v) << endl;
return 0;
}
输出结果为:
fpclassify(x) = 1
fpclassify(y) = 2
fpclassify(z) = 0
fpclassify(w) = 2
fpclassify(v) = 3
其中,1对应FP_INFINITE,2对应FP_ZERO,0对应FP_NAN,3对应FP_SUBNORMAL。
使用fpclassify()函数时,需要注意以下几点:
综上所述,C++ STL math.fpclassify()函数是一个判断浮点数特殊情况的有用工具。