Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.06.06;
Скачать: [xml.tar.bz2];

Вниз

Результат NaN   Найти похожие ветки 

 
Karlson ©   (2005-05-23 18:29) [0]

Добрый день. Оперирую набором действительных чисел в пределах от 0 до 1. Над ними выполняю различные операции, такие как умножение, сложение, вычисление определенных функций. В некоторых случаях результатом есть NaN. С чем это связано? И что может быть причиной, как устранить? Логики в появлении такого результата уловить не могу, так как оперирую со случайных набором из 600 чисел.
Заранее спасибо.


 
Yanis ©   (2005-05-23 18:51) [1]

17ю строку проверял? Ошибка там.


 
Anatoly Podgoretsky ©   (2005-05-23 18:58) [2]

Nan := 0/0


 
Karlson ©   (2005-05-23 19:04) [3]

To Yanis
Какая 17 строка???

To Anatoly Podgoretsky
А если у меня нет деления на ноль? у меня одна функция с дробью, но там в знаменателе 1+е^... .


 
Yanis ©   (2005-05-23 19:14) [4]


> To Yanis
> Какая 17 строка???

Строчка кода, в которой обычно и таится ошибка :)


 
Arm79 ©   (2005-05-23 19:16) [5]

Karlson ©   (23.05.05 19:04) [3]
Пример

a = 0.5
d = e^-700
c = a/b
d = NaN

предлагаю сделать так

try
 c := a/b
except
 MessageDlg(FloatToStr(a)+"-"+FloatToStr(b));
end;


 
Злобная Танька   (2005-05-23 19:45) [6]

есть функция IsNaN вообще для таких случаев!


 
Karlson ©   (2005-05-23 20:09) [7]

To Злобная Танька
Не расскажете подробнее?


 
Marser ©   (2005-05-23 20:13) [8]


> Karlson ©   (23.05.05 20:09) [7] [Новое
>сообщение][Ответить]
>To Злобная Танька
> Не расскажете подробнее?

Хелп рулит:
function IsNan(const AValue: Double): Boolean;

Description

Use IsNan to test whether the value specified by AValue represents NaN (not a number). Note that NaN is distinct from positive and negative infinity, which can be detected using the IsInfinite function.


 
злобная танька   (2005-05-23 20:15) [9]

ну я имею ввиду что наверно это будет работать быстрее чем через try..except, как предлагалось выше.
т.е. пишем
if not IsNan(a/b) then c := a/b else showmessage("нифига!");


 
Karlson ©   (2005-05-23 20:20) [10]

А если меня "нифига" не устраивает... у меня же нет деления на ноль... я не понимаю почему оно появляется...


 
Yanis ©   (2005-05-23 20:27) [11]


> А если меня "нифига" не устраивает... у меня же нет деления на
> ноль... я не понимаю почему оно появляется...

В таком случае см. [1], [4]


 
Karlson ©   (2005-05-23 20:31) [12]

To Yanis
дельное бы чего посоветовал...


 
Yanis ©   (2005-05-23 20:39) [13]

2 [12]
Выложи здесь код, который по твоему предположению "не работает". Тогда дельных советов больше будет (может быть).


 
Karlson ©   (2005-05-23 20:43) [14]

не могу... меня попросили выяснить. а кода не давали... просто отчего возникает такая ошибка и как все-таки вернуть число, а не Нан... какая разница какой код... если в знаменателе "все красиво"...


 
Просто Джо ©   (2005-05-23 20:47) [15]


>  в знаменателе "все красиво"...


Ну, так хоть пример красивых знаменателей


 
злобная танька   (2005-05-23 20:49) [16]

если результат выражения - NaN, как можно вместо него вернуть число? NaN это даже не бесконечность, это вообще нифига.
а отчиво возникает - вам уже написали: 0.0 / 0.0
ето можно было и в хелпе написать.
короче ловите NaN и возвращяйте вместо него какое-нибудь прикольное число по рандому например!


 
Karlson ©   (2005-05-23 20:50) [17]

ну так писал же... 1+е:...


 
Yanis ©   (2005-05-23 20:52) [18]


> какая разница какой код

Думаю, что большая.


> Оперирую набором действительных чисел в пределах от 0 до 1.
...
> так как оперирую со случайных набором из 600 чисел.

Вот тебе и ноль в знаменателе.


 
Karlson ©   (2005-05-23 20:52) [19]

To злобная танька
объясните мне, как из 1+е:... может получиться 0.0??


 
Karlson ©   (2005-05-23 20:53) [20]

To Yanis:
ну откуда?... 1+е^...


 
Yanis ©   (2005-05-23 20:54) [21]

Хватит уже.


 
злобная танька   (2005-05-23 20:59) [22]

даже если не может, тогда баг не в етом и вас дезинформировали. или у них какая-нибудь смешная версия D6. короче без кода ниче вы не добьетесь. всё равно что написали бы
"считаю 1+1 получается 3. ПОЧЕМУ??"


 
Karlson ©   (2005-05-23 21:00) [23]

To Yanis:
что хватит?...


 
Styx   (2005-05-23 21:00) [24]

Не число можно получить и иным способом. Например, sin(2). Поэтому гадать бесполезно.


 
Karlson ©   (2005-05-23 21:01) [25]

To злобная танька:
Спасибо Вам большое!!!


 
Styx   (2005-05-23 21:05) [26]

Я имел в виду arcsin :)


 
palva ©   (2005-05-23 21:57) [27]

Бывает еще потеря значимости. Когда выполняется вычитание очень маленьких и в то же время очень близких чисел. После вычитания мантисс получается очень маленькое число, при попытке нормализации мантиссы переполняется порядок. Возникает ситуация NaN. Я сталкивался с этим в больших матричных задачах типа ЛП. Теоретически элемент матрицы должен быть нулем, но я его зачем-то вычислял - и вылетал на потерю точности.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.06.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.011 c
8-1108800982
Rustam
2005-02-19 11:16
2005.06.06
вставка теста в графику(image)


14-1116583846
BugMaker
2005-05-20 14:10
2005.06.06
Подскажите, как правильно выделить части URL-адреса?


14-1116215298
Crusider
2005-05-16 07:48
2005.06.06
Я тут вьювер картинок мультиформатный забацал можете потестить?


1-1116480020
Аноним
2005-05-19 09:20
2005.06.06
Всем Как в консолном приложении вернуть Error level для обработки


1-1116853365
Foggot
2005-05-23 17:02
2005.06.06
Открытие окон интернета





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский