java中浮点数的存储是由四个字节(32位)来完成:如下图
四个字节总共32位,下标从0开始到31,第31位是符号位,0表示正数,1表示负数。
第23位到第30位是幂指数,第0位到第22位是有效位
可以知道,无穷大是幂指数都为1,即第23位到30位都为,有效位都为零,编写以下代码:
public class lesson2 {
public static void main(String []args)
{
System.out.println(Float.intBitsToFloat(0x7f800000));
}
}
在这段代码中,7是111(28--30),f是1111(24-27),8是1000(20--23),即幂指数都是1,
运行以后 输出:infinity(无穷大);
那最大的浮点数就是比无穷大小一点,即幂指数前7位都是1,第八位(即第23位)是0,有效位全都是1,
此即为最大的浮点数,编写以下代码
public class lesson2 {
public static void main(String []args)
{
System.out.println(Float.intBitsToFloat(0x7f7fffff));
}
}
<pre name="code" class="java"><pre name="code" class="java">运行以后,输出:3.4028235E38
那最小的浮点数是多少呢?很简单,即幂指数都为0,有效位只有最后一位(即第一位)为1,编写以下代码:
public class lesson2 {
public static void main(String []args)
{
System.out.println(Float.intBitsToFloat(0x00000001));
}
}
运行以后,输出:1.4E-45