C ++ переносной NaN для win32 / Unix - PullRequest
2 голосов
/ 21 марта 2012

В библиотеке gcc в математической библиотеке определен NaN, который будет использоваться для инициализации неопределенной двойной переменной.Тем не менее, этот NaN не определен в win32 math lib, мне было интересно, есть ли способ сделать этот портативный?По сути, я просто хотел дать значение по умолчанию для переменных типа «double».

Ответы [ 2 ]

7 голосов
/ 21 марта 2012

C ++ гарантирует, что 0.0/0.0 равно NaN, поэтому это самый простой способ выразить это.

Помните, что NaN != NaN, поэтому (0.0/0.0) == (0.0/0.0) на самом деле ложно.Чтобы проверить NaN-ность, если у вас нет библиотеки is_nan, просто проверьте x != x для какого-нибудь кандидата double x.

5 голосов
/ 21 марта 2012

При написании переносимого кода на C ++ попробуйте использовать NaN, определенный в стандартной библиотеке <limits>. Например, для типа double вы можете использовать std::numeric_limits<double>::quiet_NaN().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...