下面的question表示Double的最小值为-Double.MAX_VALUE
。对于Float (即-Float.MAX_VALUE
)也是这样吗?
发布于 2011-08-16 06:19:54
是的,-Float.MAX_VALUE
是幅度最大的负数。float
的表示方式与double
相同,只有一半的存储空间(以及相应的精度损失)。由于IEEE754中的符号由单个比特表示,因此翻转该比特不会改变其余比特可达到的总幅度。
发布于 2011-08-16 06:22:05
是的-除了符号位被翻转外,它与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
}
}
发布于 2016-06-24 01:49:18
编辑:我的原始答案似乎是严重错误的。谢谢你@aioobe指出这一点。
相反,使用java代码的魔力来回答标题问题:
System.out.printf( "Float.MAX_VALUE: %,f\n", Float.MAX_VALUE );
340,282,346,638,528,860,000,000,000,000,000,000,000.000000 :Float.MAX_VALUE
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
https://stackoverflow.com/questions/7071457
复制相似问题