一、什麼是無窮大和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; else cout<<"c is not finite"<<endl; return 0; }
在這個示例代碼中,a表示正無窮,b表示NaN,c表示一個普通的浮點數。使用isfinite函數對這三個數進行判斷,輸出它們是否為有限數。
運行結果:
a is not finite b is not finite c is finite
四、小結
使用isfinite函數可以便捷地判斷一個浮點數是否為有限數,從而判斷它是否為無窮大或NaN。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/285601.html