Здравствуйте, andy1618, Вы писали:
kl>>>>Про сравнение doubleАвтор: McSeem2
Дата: 31.08.07
_FR>>>Спасибо, давно эту ссылку искал, найти всё никак не мог
V>>Только осторожней с той формулой, она работает только для чисел одинаковым знаком.
A>Речь про эту формулу?
A>A>if (fabs(a-b) <= DBL_EPSILON * fmax(fabs(a),fabs(b)))
A>{
A> . . .Числа равны с относительной точностью DBL_EPSILON
A>}
A>
A>ИМХО тут всё чётко.
Ну подставте, к примеру, 1.e-10 и -1.e-10, получится:
if (2.e-10 <= 2.e-16 * 1.e-10)
Очевидно что false. Это, имхо, потому-что двух чисел с разным знаком — недостаточно для их сравнения, не хватает данных. И если подумать, то с одним знаком — тоже, т.к., по большому счёту, чтобы сравнить два числа нужно — третье, независимое число.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]