Saltar al contenido

¿Cómo compruebo si un cero es positivo o negativo?

Te traemos la respuesta a este dilema, al menos eso pensamos. Si continuas con preguntas dínoslo, que sin dudarlo te responderemos

Solución:

Sí, se divide por él. 1 / +0.0f es +Infinitypero 1 / -0.0f es -Infinity. Es fácil saber cuál es con una simple comparación, por lo que obtienes:

if (1 / x > 0)
    // +0 here
else
    // -0 here

(esto supone que x solo puede ser uno de los dos ceros)

Puedes usar Float.floatToIntBits para convertirlo en un int y mira el patrón de bits:

float f = -0.0f;

if (Float.floatToIntBits(f) == 0x80000000) 
    System.out.println("Negative zero");

Definitivamente no es el mejor enfoque. Revisa la función

Float.floatToRawIntBits(f);

Doku:

/**
 * Returns a representation of the specified floating-point value
 * according to the IEEE 754 floating-point "single format" bit
 * layout, preserving Not-a-Number (NaN) values.
 *
 * 

Bit 31 (the bit that is selected by the mask * @code 0x80000000) represents the sign of the floating-point * number. ... public static native int floatToRawIntBits(float value);

Aquí puedes ver las reseñas y valoraciones de los usuarios

Agradecemos que quieras añadir valor a nuestra información participando con tu veteranía en las referencias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *