Максимальное значение для Float в Java? - PullRequest
22 голосов
/ 16 августа 2011

Следующий вопрос указывает, что минимальное значение Double равно -Double.MAX_VALUE.Это также верно для Float (то есть, -Float.MAX_VALUE)?

Ответы [ 5 ]

26 голосов
/ 16 августа 2011

Да, -Float.MAX_VALUE - отрицательное число с наибольшей величиной.float s представлены так же, как double s, только с половиной памяти (и сопровождающей потерей точности). Поскольку знаки в IEEE 754 представлены одним битом, переключение этого бита не меняетобщая величина, достижимая оставшимися битами.

18 голосов
/ 16 августа 2011

Да - это тот же битовый шаблон, что и Float.MAX_VALUE, за исключением того, что бит знака перевернут ... и это еще один способ получить значение:

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
    }
}
12 голосов
/ 23 июня 2016

РЕДАКТИРОВАТЬ: мой первоначальный ответ, кажется, очень неправильно. Спасибо @aioobe за указание на это.

Вместо этого, используя магию Java-кода, чтобы ответить на заглавный вопрос:

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,000000

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

в научной записи: 3.40282346638528860e + 38

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

в шестнадцатеричном формате с плавающей запятой со значением и показателем степени: 0x1.fffffep127

6 голосов
/ 16 августа 2011

Да, это также верно для Float.

Для получения дополнительной информации см. Руководство здесь http://download.oracle.com/javase/7/docs/api/java/lang/Float.html

1 голос
/ 16 августа 2011

Да, и по той же причине, которая указана в ответе на вопрос, который вы связали, Floats и Doubles используют представление IEEE754, которое является «симметричным» из-за способа их хранения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...