Obtener NEGATIVO mínimo valor en punto flotante en C++

Yo estaba mirando std::numeric_limits<float>::min/max() pero parece que ‘min()’ devuelve el menor valor absoluto, no el menor valor. ¿Es seguro utilizar

-std::numeric_limits<float>::max(), yo.e es float simétrica en el min/max límites?

  • Es negativo mínimo o máximo valor negativo?
  • el número más pequeño de un flotador puede sostener. Creo que eso es técnicamente sin ambigüedades, ya que -1 es menor que 0, pero me refiero a que «el valor negativo de mayor magnitud»
  • Si el compilador garantiza que usted obtenga IEEE 754 números de punto flotante o una buena aproximación, entonces el conjunto de representable flota es simétrica y se puede utilizar -std::numeric_limits<float>::max()
InformationsquelleAutor Mr. Boy | 2010-08-20

3 Kommentare

  1. 30

    De punto flotante IEEE 754 uso de números de un bit de signo para firma-ness (en lugar de algo como complementos dobles), así que si usted está seguro de que su compilador/plataforma utiliza la representación (muy común), entonces usted puede utilizar -std::numeric_limits<float>::max() como se sospecha.

    • Google me trajo aquí. Gracias! 😛
  2. 24

    usar std::numeric_limits::más bajo()

    static _Ty __CRTDECL lowest() _THROW0()
        {   //return most negative value
        return (-(max)());
        }
    • cplusplus.com/reference/std/limits/numeric_limits – no menciona lowest, es el estándar?
    • Sí en C++0x, no en C++98.
    • Gracias. Yo no tenía ni idea sobre el C++0x parte de eso.
    • No lo he hecho, pero su respuesta es parcialmente correcta, ya que la versión de la norma no se mencionó en la pregunta 🙂
    • +1 por la info acerca de std::numeric_limits::más bajo()
  3. 4

    Sí, float es simétrica en valores mínimos y máximos.

    Si usted está utilizando la menor valor representable como un valor inicial en la búsqueda de una lista para su máximo valor, considere el uso de infinito en su lugar.

    std::numeric_limits<T>::has_infinity() volverá true para cualquier tipo numérico que tiene y std::numeric_limits<T>::infinity() devolverá un valor que siempre se evalúa mayor que la de cualquier otro no-NaN valor para ese tipo. Este valor puede ser negado y evaluará menos que cualquier otra cosa.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea