числовые ограничения функции-члены lowest и min
numeric_limits<T>::min();
numeric_limits<T>::lowest();
чем отличается значение, возвращаемое обеими функциями?
3 ответов
В пункте 18.3.2.4 стандарта C++11 указывается:
static constexpr T min() noexcept;1 Минимальное конечное значение.
2 для плавающих типов с денормализацией возвращает минимальное положительное нормализованное значение.
3 значимый для всех специализаций
[...]
static constexpr T lowest() noexcept;6 конечное значение x такое, что нет другого конечного значения y, где y
7 Значимый для всех специализаций, в которых is_bounded != ложный.
сноска 197 затем добавляет соответствующее замечание:
lowest()необходимо, потому что не все представления с плавающей запятой имеют наименьшее (самое отрицательное) значение, которое является отрицательное наибольшего (наиболее положительного) конечного значения.
для типов с плавающей точкой min возвращает наименьшее конечное число > 0 представимо в типе (т. е. число, имеющее наименьшее абсолютное значение != 0), а lowest возвращает наименьшее конечное число, которое можно представить (т. е. отрицательное число максимального абсолютного значения, которое меньше -infinity).
Если вы проверяете ссылку на эти функции, например этот min и этот lowest вы можете видеть, что есть некоторые ценности, которые отличаются.