Максимальное значение для Float в Java?
Следующий вопрос указывает, что минимальное значение Double -Double.MAX_VALUE
, Это также верно для Float (то есть, -Float.MAX_VALUE
)?
5 ответов
Да, -Float.MAX_VALUE
отрицательное число с наибольшей величиной. float
s представлены так же, как double
s, только с половиной пространства хранения (и сопровождающей потерей точности.) Поскольку знаки в 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, которое "симметрично" из-за способа их хранения.