Здравствуйте, <Аноним>, Вы писали:
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>>