Re[4]: memcmp и float
От: rg45 СССР  
Дата: 31.08.07 07:11
Оценка:
Здравствуйте, <Аноним>, Вы писали:

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


А>-0.0 == 0.0

Если у Вас это выражение оказалось ложным, значит что-то из того, что Вы сравниваете только лишь должно быть нулем "с точки зрения логики программы", а на самом деле таковым не является. Попробуйте ради интереса откомпилировать и выполнить следующий пример:

#include<iostream>
#include<cmath>

int main() 
{
  double x = std::sin(0.0);
  double negative_x = -x;
  std::cout << (negative_x == x) << std::endl;
}


Что, неужели (negative_x == x) ложно?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
--
Справедливость выше закона. А человечность выше справедливости.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.