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