Как я могу обнаружить / ловушку -1. # IND в C ++ - PullRequest
1 голос
/ 12 марта 2012

Я попробовал все свои обычные приемы для обнаружения нечетных чисел (NaN, QNaN и т. Д.), И я не могу обнаружить -1. # IND.Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

3 голосов
/ 12 марта 2012
0 голосов
/ 26 марта 2012
union _IEEESingle
{
   float Float;
   struct
   {
      unsigned int Frac : 23;
      unsigned int Exp  : 8;
      unsigned int Sign : 1;
   } IEEE;
};    

bool isQnan(float in) 
    { 
       return(reinterpret_cast<_IEEESingle*>(&in)->IEEE.Exp == (1u << 8)-1 && 
          reinterpret_cast<_IEEESingle*>(&in)->IEEE.Frac); 
    }
0 голосов
/ 12 марта 2012

Вы пытались сравнить число с самим собой:

if ( x != x )
   assert(!"nan");

или просто

assert(x==x);

Каковы ваши обычные трюки?

Кроме того, нечетные числа 1, 3,5, ..., как и в, противоположность четного.Вы говорите о NaN, я полагаю.

...