Форум: "Прочее";
Текущий архив: 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