Re[9]: Сравнение int с decimal на больше-меньше.
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.09.09 06:10
Оценка: :)
Здравствуйте, hexamino, Вы писали:
H>А может быть, float2 — float1 > -delta ?
Нет. Вот как это должно работать:
1. Вычисляем delta = float2 — float1.
2. Если бы у нас была точная арифметика, то по знаку delta мы бы судили о том, кто больше. А равенство достигалось бы при delta == 0.
3. Но у нас конечная точность, и мы моделируем это при помощи расширения "зоны нуля" в обе стороны на epsilon. То есть теперь при |delta| < epsilon мы считаем. что float1 == float2.
4. Ну так очевидными следствиями из этого являются:
4.1. float2 < float1 считается тогда, когда delta <= -epsilon
4.2. float2 > float2 cчитается тогда, когда delta >= +epsilon

Нарисуйте картинку и всё станет очевидно.

Еще, как упомянул ТК, можно ввести относительную точность, вместо абсолютной. Это когда epsilon выражается через |float2+float1|. В принципе, можно обойтись и одним из сравниваемых — любым, поскольку если они сильно отличаются, то и епсилон нам не важен.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.