Здравствуйте, 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>>