以下question表示Double的最小值为-Double.MAX_VALUE
。 Float也是如此(即-Float.MAX_VALUE
)?
答案 0 :(得分:26)
是的,-Float.MAX_VALUE
是幅度最大的负数。 float
的表示方式与double
s相同,只有一半的存储空间(以及随之而来的精度损失。)因为IEEE 754中的符号由一个位表示,所以翻转该位不会不会改变剩余比特可达到的整体幅度。
答案 1 :(得分:18)
是的 - 它与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
}
}
答案 2 :(得分:10)
编辑:我的原始答案似乎非常不正确。谢谢@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,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
答案 3 :(得分:6)
是的,Float也是如此。
有关详情,请查看此处的手册http://download.oracle.com/javase/7/docs/api/java/lang/Float.html
答案 4 :(得分:1)
是的,并且出于与您链接的问题的答案中所述的完全相同的原因,Floats和Doubles使用IEEE754表示,由于它们的存储方式而是“对称的”。