2012-03-21 34 views
2

在gcc庫中,在數學庫中定義了一個NaN,用於初始化未定義的雙變量等情況。然而,這個NaN沒有在win32數學庫中定義,我想知道是否有任何方法可以使這個便攜式?基本上,我只是想給「雙」型變量賦予一個默認值。Win32/Unix的C++便攜式NaN

回答

7

C++保證0.0/0.0NaN,所以這是表達它的最簡單的方法。

請記住NaN != NaN,所以(0.0/0.0) == (0.0/0.0)實際上是錯誤的。要測試NaN-ness,如果某個地方沒有圖書館is_nan,只需檢查x != x以獲取某些候選人double x

5

在編寫可移植的C++代碼時,請嘗試使用標準庫<limits>中定義的NaN。例如對於double類型,您可能需要使用std::numeric_limits<double>::quiet_NaN()