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 +Infinity
pero 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.