Сравните двойное с нулем, используя эпсилон

Сегодня я просматривал некоторый код C ++ (написанный кем-то другим) и нашел этот раздел:

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?

Ответы на вопрос(11)

Ваш ответ на вопрос