c++ - numeric_limits funciones de miembro mínimo y mínimo
numeric_limits c++ (3)
El párrafo 18.3.2.4 de la norma C ++ 11 especifica:
static constexpr T min() noexcept;1 Valor finito mínimo.
2 Para tipos flotantes con desnormalización, devuelve el valor normalizado positivo mínimo.
3 Significativo para todas las especializaciones.
[...]
static constexpr T lowest() noexcept;6 Un valor finito x tal que no hay otro valor finito y donde y <x.
7 Significativo para todas las especializaciones en las que is_bounded! = False.
La nota de pie de página 197 luego agrega el comentario relevante:
lowest()es necesario porque no todas las representaciones de punto flotante tienen un valor más pequeño (más negativo) que es el negativo del valor finito más grande (más positivo).
numeric_limits<T>::min();
numeric_limits<T>::lowest();
¿Cuál es la diferencia entre el valor devuelto por ambas funciones?
Para los tipos de punto flotante, min devuelve el número finito más pequeño que es > 0 representable en el tipo (es decir, ¡el número que tiene el valor absoluto más bajo != 0 ), mientras que el valor lowest devuelve el número finito más pequeño que se puede representar (es decir, el número negativo del valor absoluto máximo) eso es menos que -infinity ).
Si marca una referencia de estas funciones, por ejemplo, esta para min y esta para la lowest , puede ver que hay algunos valores que difieren.