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

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

5 ответов

Решение

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

Да - это тот же битовый шаблон, что и 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
    }
}

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

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

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

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

Другие вопросы по тегам