一、什么是无穷大和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"<在这个示例代码中,a表示正无穷,b表示NaN,c表示一个普通的浮点数。使用isfinite函数对这三个数进行判断,输出它们是否为有限数。
运行结果:
a is not finite b is not finite c is finite四、小结
使用isfinite函数可以便捷地判断一个浮点数是否为有限数,从而判断它是否为无穷大或NaN。