一、什么是无穷大和NaN
在C++中,浮点数类型可以表示无穷大和NaN(Not a Number)。 无穷大有两种表示:正无穷和负无穷,分别表示比任何正数大和比任何负数小。 NaN指的是一些不合法的运算结果,比如0/0、sqrt(-1)的结果。
二、为什么需要判断无穷大和NaN
在进行科学计算、图像处理等复杂运算时,会经常出现无穷大和NaN,需要对其进行特殊的处理。 例如,如果出现NaN,运算会中断,需要重新进行计算或者处理。
三、使用isfinite函数判断无穷大和NaN
C++中提供了一个函数isfinite
来判断一个浮点数是否为有限数(即既不是无穷大也不是NaN)。
isfinite
函数定义在cmath
头文件中:
#include <cmath>
bool isfinite( float arg );
bool isfinite( double arg );
bool isfinite( long double arg );
这个函数的返回值是一个bool
类型,表示传入的参数是不是有限数。
当传入的参数为无穷大或NaN时,返回值为false
;否则返回true
。
下面是使用isfinite
函数判断浮点数的示例代码:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a = 2.0/0.0;
double b = 0.0/0.0;
double c = 1.23;
if(isfinite(a))
cout << "a is finite" << endl;
else
cout << "a is not finite" << endl;
if(isfinite(b))
cout << "b is finite" << endl;
else
cout << "b is not finite" << endl;
if(isfinite(c))
cout << "c is finite" << endl;
return 0;
}
在这个示例代码中,a
表示正无穷,b
表示NaN,c
表示一个普通的浮点数。使用isfinite
函数对这三个数进行判断,输出它们是否为有限数。
运行结果:
a is not finite
b is not finite
c is finite
四、小结
使用isfinite
函数可以便捷地判断一个浮点数是否为有限数,从而判断它是否为无穷大或NaN。