web-dev-qa-db-fra.com

Valeur maximale pour Float en Java?

question indique que la valeur minimale d'un Double est -Double.MAX_VALUE. Est-ce également vrai pour Float (c'est-à-dire -Float.MAX_VALUE)?

22
Jérôme Verstrynge

Oui, -Float.MAX_VALUE est le nombre négatif de plus grande ampleur. floats sont représentés de la même manière que doubles, juste avec la moitié de l'espace de stockage (et la perte de précision qui l'accompagne.) Puisque les signes dans IEEE 754 sont représentés par un seul bit, inverser ce bit ne fait pas 't changer la magnitude globale atteignable par les bits restants.

26
dlev

Oui - c'est le même motif de bits que Float.MAX_VALUE sauf avec le bit de signe inversé ... et c'est une autre façon d'obtenir la valeur:

public class Test {
    public static void main(String[] args) {
        // Float.MAX_VALUE is intBitsToFloat(0x7f7fffff)
        // so we set the most significant bit - the sign bit
        float f = Float.intBitsToFloat((int) 0xff7fffff);
        System.out.println(f == -Float.MAX_VALUE); // true
    }
}
18
Jon Skeet

EDIT: Ma réponse d'origine semble être très incorrecte. Merci @aioobe de l'avoir signalé.

Au lieu de cela, utilisez la magie de Java code pour répondre à la question du titre:

System.out.printf( "Float.MAX_VALUE: %,f\n", Float.MAX_VALUE );

Float.MAX_VALUE: 340,282,346,638,528,860,000,000,000,000,000,000,000,0000000

System.out.printf("in scientific notation: %.18g\n", Float.MAX_VALUE );

en notation scientifique: 3.40282346638528860e + 38

System.out.printf(
            "in hexadecimal floating-point number with a significand and "
            + "an exponent: %a", Float.MAX_VALUE );

en nombre à virgule flottante hexadécimale avec une signification et un exposant: 0x1.fffffep127

13
R.D. Alkire

Oui, c'est également vrai pour Float.

Pour plus d'informations, consultez le manuel ici http://download.Oracle.com/javase/7/docs/api/Java/lang/Float.html

6

Oui, et pour exactement la même raison que celle indiquée dans la réponse à la question que vous avez liée, les flotteurs et les doubles utilisent une représentation IEEE754 qui est "symétrique" en raison de la façon dont ils sont stockés.

1
fvu