numeric_limits funciones miembro mínimas y mínimas

2 minutos de lectura

avatar de usuario
Mahoma

numeric_limits<T>::min();
numeric_limits<T>::lowest();

¿Cuál es la diferencia entre el valor devuelto por ambas funciones?

avatar de usuario
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

avatar de usuario
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.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad