Сегодня я просматривал код С++ (написанный кем-то еще) и нашел этот раздел:
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
?