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.