2012-03-21 11 views
2

gccライブラリでは、未定義のdouble変数を初期化する場合などに使用する数学ライブラリでNaNが定義されています。しかし、このNaNはwin32の数学ライブラリで定義されていないので、私はこれを移植可能にする方法があるのだろうかと思っていましたか?基本的に、私はちょうど "ダブル"型変数にデフォルト値を与えたいと思っていました。win32/Unix用C++ portable NaN

答えて

7

C++は、0.0/0.0NaNであることを保証しているため、これを表現する最も簡単な方法です。

NaN != NaNですので、(0.0/0.0) == (0.0/0.0)は実際にはfalseです。 NaN -nessをテストするには、is_nanというライブラリがない場合は、double xx != xをチェックしてください。

5

ポータブルC++コードを記述するときは、標準ライブラリ<limits>で定義されているNaNを試してみてください。たとえば、タイプがdoubleの場合、std::numeric_limits<double>::quiet_NaN()を使用します。

関連する問題