是的,-Float.MAX_VALUE
是最大幅度的负数。float
的表示方式与double
相同,只是存储空间减半(伴随着精度损失)。由于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: 3.4028235E38
(这是一个表示最大浮点数的常量,其值约为340亿亿亿。)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
是的,正如您链接的问题的答案所述,浮点数和双精度浮点数使用IEEE754表示法,这是由于它们存储方式的“对称性”。