Re[7]: Как правильно сравнивать числа типа double?
От: Vain Россия google.ru
Дата: 03.10.10 19:54
Оценка:
Здравствуйте, andy1618, Вы писали:

V>>>>Только осторожней с той формулой, она работает только для чисел одинаковым знаком.

A>>>Речь про эту формулу?
A>>>
A>>>if (fabs(a-b) <= DBL_EPSILON * fmax(fabs(a),fabs(b)))
A>>>{
A>>>  . . .Числа равны с относительной точностью DBL_EPSILON
A>>>}
A>>>

A>>>ИМХО тут всё чётко.
V>>Ну подставте, к примеру, 1.e-10 и -1.e-10, получится:
V>>
V>>if (2.e-10 <= 2.e-16 * 1.e-10)
V>>

V>>Очевидно что false.
A>Всё правильно — и должно быть false. Это как сравнивать +1 и -1 — было бы странно их уравнять
С чего бы это, а почему 100000..00001 и 100000..00003 — не странно?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.