Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос про сообщение NAN? [D5, Win95/98]


NAN ©   (2002-12-25 07:48:00) 

В результате какиих действий при арифметических операциях
выдается сообщение NAN.


NAN   (2002-12-26 03:23:00) [1]

Я нашел где возникает данное исключение. Выражение (X-(в этом месте происходит возведение отрицательного числа в степень меньше 1 и соответственно возникает исключение и далее от X естественно ничего не отнимается )) итог выражения (-NAN).


icWasya   (2002-12-25 14:43:00) [2]

signaling NaN
знак + или -
порядок 11..11 - все единицы
мантисса 1,0ххххх - (ненулевая)
эти числа вызывают исключения, если с ними пытаются делать арифменические операции

quet NaN
знак + или -
порядок 11..11 - все единицы
мантисса 1,1ххххх - (ненулевая)
эти числа не вызывают исключения, если с ними пытаются делать арифменические операции


Рыжик   (2002-12-25 10:09:00) [3]

NaN означает неопределённость. Возникает при делении 0 на 0. При делении любого другого числа (<>0) на 0 возникает INF или -INF (бесконечность) в зависимости от знака. При делении любого числа (кроме INF) на очень большое (INF) получается 0. Всё как в обычной математике.


NAN   (2002-12-25 09:42:00) [4]

Если я правильно понял NAN есть 0.


Внук   (2002-12-25 09:39:00) [5]

Могу лишь высказать предположение:
При операциях деления может возникнуть две ошибки - переполнение (overflow) (при делении на ноль, к примеру), в этом случае возвращается INF (Infinity - бесконечно большое число). И вторая ошибка - потеря точности (underflow), при делении на очень большое число. В последнем случае очевидно, что результат будет ненулевой, но у машины не хватает разрядов для хранения такой маленькой дроби. В результате выдается 0 и сообщение NAN - Not a number.
Однако, могу ошибаться, давно читал...


Lady D   (2002-12-25 09:37:00) [6]

Delphi Help: const NaN = 0.0 / 0.0;
To check use IsNan


NAN   (2002-12-25 09:34:00) [7]

Спасибо Lady D © .
Но однако я не могу понять что значит не является числом. В моем примере происходят следующие действия деление, разность и возведение в степень. При делении на 0 выдается INF я также тестировал и другие действия дают тот же INF при "неккоректных" операциях. МАСТЕРА! я уверен ВЫ неоднократно сталкивались с этим, дайте если не трудно обстоятельный ответ по данному вопросу. В моей проге много действий и на каком этапе дается NAN очень трудно определить.


Lady D   (2002-12-25 09:22:00) [8]

IMHO - Not A Number (Не является числом)


Наверх

Титульная страница Поиск, карта сайта Написать письмо