Re[4]: memcmp и float
От: rg45 СССР  
Дата: 30.08.07 08:03
Оценка: 4 (1)
Здравствуйте, alzt, Вы писали:

A>Здравствуйте, rg45, Вы писали:


G>>>Нет. Вообще прямое сравнение чисел с плавающией запятой, вида (a==b) может дать неправильный результат


R>>Если битовое представление a и b одинаково, то эти два числа равны и выражение a == b истинно. Если битовое представление a и b не одинаково, то эти два числа не равны и выражение a == b ложно. Исключение составляют лишь QNAN'ы, для которых по задумке число не равно само себе. Где же неправильный результат?


R>>З.Ы. Часто случается, что при операциях с числами с плавающей точкой мы получаем результат с некоторой погрешностью и часто при сравнении эту погрешность нужно учитывать. Но сравнение дает правильный результат все-таки.


A>Результат правильный с точке зрения эквивалентности двоичного представления, но может быть не правильным с точки зрения логики программы, как раз из-за округлений.


А можем ли мы в этом случае говорить, что операция сравнения дает неправильный результат? ИМХО, в этом случае правильнее говорить, что логика программы содержит ошибку, поскольку не учитывает погрешность, возможную при операциях с числами с плавающей точкой.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
--
Справедливость выше закона. А человечность выше справедливости.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.