Максимальное значение для Float в Java?

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


person Jérôme Verstrynge    schedule 15.08.2011    source источник
comment
Вы имеете в виду -Float.MAX_VALUE?   -  person dckrooney    schedule 16.08.2011
comment
Почему бы это не быть истинный?   -  person CoolBeans    schedule 16.08.2011
comment
@CoolBeans прочитал связанный с ним вопрос; он говорит об отрицательном числе с наибольшей величиной.   -  person dlev    schedule 16.08.2011
comment
@dlev Да, я имею в виду отрицательное число с наибольшей величиной   -  person Jérôme Verstrynge    schedule 16.08.2011


Ответы (5)


Да, -Float.MAX_VALUE — это отрицательное число с наибольшей величиной. floats представлены так же, как doubles, только с половиной места для хранения (и сопутствующей потерей точности). биты.

person dlev    schedule 15.08.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
    }
}
person Jon Skeet    schedule 15.08.2011

РЕДАКТИРОВАТЬ: мой первоначальный ответ кажется совершенно неверным. Спасибо @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

person R.D. Alkire    schedule 23.06.2016

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

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

person Alexander Pogrebnyak    schedule 15.08.2011

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

person fvu    schedule 15.08.2011