Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как правильно записать число -1.#IND000000000000


Автор: neosapient 23.2.2011, 14:10
Добрый день.

Как грамматически правильно записать число "-1.#IND000000000000", чтобы компилятор сумел правильно его интерпретировать?
Как выглядит правильный синтаксис такого числа ?

Подробнее.
Есть сторонняя программа, которая передает мне число типа double.
Если сторонняя программа не успела посчитать число, то она вместо числа передает число, которое в отладчике выглядит как "-1.#IND000000000000"

Я хочу организовать в программе цикл ожидания, чтобы дождаться на стороне клиента адыкватных чисел. Что то вроде:
Код

while(true){
    a = getValue();
    if(a != -1.#IND000000000000)  // <-- компилятор ругается на неправильную запись числа
        break;
    Sleep(1);
}


Автор: mes 23.2.2011, 14:12
думаю так:    if (a!=a)

Автор: neosapient 23.2.2011, 14:25
mes, спасибо!

Идею понял. Число NaN (Not a Number) не может быть равно самому себе.

Код

while(true){
    a = getValue();
    if(a == a)
        break;
    Sleep(1);
}

Автор: borisbn 23.2.2011, 16:08
Цитата(neosapient @  23.2.2011,  14:25 Найти цитируемый пост)
if(a == a)  // <-- компилятор ругается на неправильную запись числа

компилятор ? ты уверен ? может при выполнении ?
http://www.cplusplus.com/reference/std/limits/numeric_limits/, может, что получится...

Автор: mes 23.2.2011, 16:20
Цитата(borisbn @  23.2.2011,  15:08 Найти цитируемый пост)
компилятор ? ты уверен ? может при выполнении ?

 smile , это опечатка из копи-паста  smile 

Автор: neosapient 24.6.2011, 14:27
Да, это была опечатка из-за копипасита.

Отредактировал предыдущий пост.

Автор: Earnest 24.6.2011, 14:38
По-моему, правильнее проверять функцией _isnan(). Обычное сравнение с NAN некорректно

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)