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

Вниз

Глупый вопрос: сравнение double   Найти похожие ветки 

 
KSergey ©   (2008-11-17 06:18) [0]

Как сравнить 2 double? На равенство и неравенство?
Учитывая, что хочется универсального метода для неизвестного порядка сравниваемых величин, т.е. сравнение вроде

abs(d1 - d2) < eps

упирается в выбор eps, с чем легко пролететь как показывает практика. Кроме всего прочего так же крайне интересуют скоростные характеристики.

Хотелось бы выведать кто чего знает по этому вопросу.


 
Дуб ©   (2008-11-17 06:36) [1]

Кнут. 2 том. 4 глава.


 
MBo ©   (2008-11-17 06:51) [2]

Math.SameValue


 
Юрий Зотов ©   (2008-11-17 08:13) [3]

> KSergey ©   (17.11.08 06:18)  

> упирается в выбор eps

Погуглите термины "машинный ноль" и "машинное эпсилон". Сильно поможет в автоматическом выборе eps.


 
TUser ©   (2008-11-17 08:20) [4]

А в чем проблема с выбором эпс? Несколько раз так писал, для конкретной задачи всегда было ясно, какое число есть очень маленькое.


 
Рамиль ©   (2008-11-17 08:57) [5]

Сравнение вещественных числе обычно применяется в физических задачах. А там eps определяется постановкой (ну зачем, например, космический корабль сажать с точностью до миллиметра, или рассчитывать прочность до грамм для нескольких тонн). Так что спустись с небес теории на грешную землю практики и не будет возникать таких вопросов;)


 
Дуб ©   (2008-11-17 09:07) [6]

> Рамиль ©   (17.11.08 08:57) [5]

Это как бы хорошо, но вот при вычислении корня из отрицательного числа возникает неприятное. И что с того, что число получившееся лишь физически незначительно отличалось от 0? Например.


 
Рамиль ©   (2008-11-17 09:30) [7]


> Это как бы хорошо, но вот при вычислении корня из отрицательного
> числа возникает неприятное.

В смысле? Вообще то, если попробовать вычислить корень из отрицательного, получим runtime error.


 
Дуб ©   (2008-11-17 09:34) [8]

> Рамиль ©   (17.11.08 09:30) [7]

Вот именно. Получим. То есть получим существенно иное поведение при почти равных числах.

Ну и при дрейфе можем в итоге насчитать разное, что мимио Луны сядем. :) Воспрос не праздный как раз для практики ведь.


 
Рамиль ©   (2008-11-17 09:53) [9]


> Дуб ©   (17.11.08 09:34) [8]

А, понял. Но тут тоже надо индивидуально подходить. Проверять надо:) И тут все равно eps согласно задаче (или, для ленивых, возвести в квадрат)


 
Альф   (2008-11-17 10:11) [10]

При физических расчетах обычно eps ~= погрешности измерений...


 
Jeer ©   (2008-11-17 10:12) [11]

Стандартно опеределенные esp:

const
 FuzzFactor = 1000;
 ExtendedResolution = 1E-19 * FuzzFactor;
 DoubleResolution   = 1E-15 * FuzzFactor;
 SingleResolution   = 1E-7 * FuzzFactor;


 
MsGuns ©   (2008-11-17 11:38) [12]

Без приложения к конкретной предметной области сабж и впрям глуп


 
KSergey ©   (2008-11-17 12:20) [13]

> Jeer ©   (17.11.08 10:12) [11]
> Стандартно опеределенные esp:

Не не, только не стандартные, проходили.

> MsGuns ©   (17.11.08 11:38) [12]
> Без приложения к конкретной предметной области сабж и впрям глуп

хотелось совершенно универсального решения... Вдруг оно есть, а я о том не знаю? :)

Спасибо ответившим, изучаю.


 
KilkennyCat ©   (2008-11-17 12:34) [14]


> Ну и при дрейфе можем в итоге насчитать разное, что мимио
> Луны сядем. :)


Зачем Луна? Пункты приема металлолома на Марсе.


 
Дуб ©   (2008-11-17 12:44) [15]


> KilkennyCat ©   (17.11.08 12:34) [14]

Ну, мы то свой металлолом пека только на Луне продали.


 
Anatoly Podgoretsky ©   (2008-11-17 13:17) [16]

> KilkennyCat  (17.11.2008 12:34:14)  [14]

Только в Фобос не попади.


 
KSergey ©   (2008-11-18 14:52) [17]

Cтатья про сравнение даблов. И подход там интересный описан (во второй примерно половине, где к int их кастят):
http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm



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

Форум: "Прочее";
Текущий архив: 2009.01.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.007 c
3-1212508863
pavel_guzhanov
2008-06-03 20:01
2009.01.11
Как ускорить обмен между двумя базами?


8-1189410907
Owner
2007-09-10 11:55
2009.01.11
Проблемы со звуком


15-1226484126
тимохов
2008-11-12 13:02
2009.01.11
Посоветуйте по Apache


8-1189005676
Tehnik(^____^)
2007-09-05 19:21
2009.01.11
Вставляем скрин в TImage


2-1227794000
oracled
2008-11-27 16:53
2009.01.11
Строка больше 255 символов, как?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский