Est-il possible de vérifier si une float
est un zéro positif (0.0) ou négatif zéro (-0.0)?
J'ai converti l' float
d'un String
et vérifié si la première char
est '-'
, mais existe-il d'autres moyens?
Est-il possible de vérifier si une float
est un zéro positif (0.0) ou négatif zéro (-0.0)?
J'ai converti l' float
d'un String
et vérifié si la première char
est '-'
, mais existe-il d'autres moyens?
Franchement pas la meilleure approche. La caisse de la fonction
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.
*
* <p>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);
Quand un flotteur est négatif (y compris -0.0
et -inf
), il utilise le même bit de signe comme un négatif de type int. Cela signifie que vous pouvez comparer la représentation entière à l' 0
, éliminant le besoin de savoir ou de calculer la représentation entière de -0.0
:
if(f == 0.0) {
if(Float.floatToIntBits(f) < 0) {
//negative zero
} else {
//positive zero
}
}
Qui a une branche au cours de la accepté de répondre, mais je pense que c'est plus lisible sans un hex constante.
Si votre but est juste de traiter -0 comme un nombre négatif, vous pouvez laisser l'extérieur if
déclaration:
if(Float.floatToIntBits(f) < 0) {
//any negative float, including -0.0 and -inf
} else {
//any non-negative float, including +0.0, +inf, and NaN
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.