Сегодня я просматривал код С++ (написанный кем-то еще) и нашел этот раздел:
double someValue = ...
if (someValue < std::numeric_limits<double>::epsilon() &&
someValue > -std::numeric_limits<double>::epsilon()) {
someValue = 0.0;
}
Я пытаюсь выяснить, действительно ли это имеет смысл.
В документации для epsilon() говорится:
Функция возвращает разность между 1 и наименьшим значением больше 1, которое представляется [двойным].
Это относится также к 0, т.е. epsilon() - наименьшее значение, большее 0? Или есть числа между 0 и 0 + epsilon, которые могут быть представлены double?
Если нет, то это не сравнение, эквивалентное someValue == 0.0?