2012-03-12 3 views
1

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

+2

возможно дубликат [Проверка двойной (или поплавок) является NaN в C++] (http://stackoverflow.com/questions/570669/checking-if-a-double-or-float-is- nan-in-c) –

+0

Также обратите внимание на ответ от @Cheers и hth. - Alf является правильным в отмеченном дубликате. –

+0

Спасибо, мы можем закрыть это. – fbl

ответ

0

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

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

или просто

assert(x==x); 

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

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

+1

Я попытался сравнить его с собой ... работает для NaN, QNan и INF ... не IND ... – fbl

+0

@ Luchian - он имел в виду странное, как в странном/не нормальном – JTeagle

0
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); 
    } 
Смежные вопросы