numeric_limits<T>::min();
numeric_limits<T>::lowest();
¿Cuál es la diferencia entre el valor devuelto por ambas funciones?
Mahoma
numeric_limits<T>::min();
numeric_limits<T>::lowest();
¿Cuál es la diferencia entre el valor devuelto por ambas funciones?
Andy merodea
El párrafo 18.3.2.4 del estándar C++11 especifica:
static constexpr T min() noexcept
;1 Valor mínimo finito.
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 al pie 197 luego agrega el comentario relevante:
lowest()
es necesario porque no todas las representaciones de coma flotante tienen un valor más pequeño (el más negativo) que sea el negativo del valor finito más grande (el más positivo).
en otras palabras lowest
devuelve algo como el complemento a 2 para el entero positivo máximo.
– Mahoma
3 de abril de 2013 a las 9:35
@Muhammadalaa: para tipos enteros no hay diferencia entre min()
y lowest()
.
–Steve Jessop
3 de abril de 2013 a las 9:57
filmar
Para 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
) tiempo lowest
devuelve el número finito más pequeño que es representable (es decir, el número negativo del valor absoluto máximo que es menor que -infinity
).
El número más pequeño que es representable es el infinito negativo; lowest
dar el más pequeño finito valor representable.
– Pete Becker
03/04/2013 a las 13:29
Si marca una referencia de estas funciones, por ejemplo este para min
y este para lowest
se puede ver que hay algunos valores que difieren.
[For future readers]la mesa en es.cppreference.com/w/cpp/types/numeric_limitslo explica bastante bien.
– dvlper
20 de mayo de 2020 a las 1:59