通常浮点数(Floating Point Number)格式采用IEEE-754标准(32),用四个字节共32位表示。浮点数格式如下:
D31 | D30~D23 | D22~D0 |
---|---|---|
浮点数符号位 | 阶码 | 尾数 |
-
符号位 s(Sign)决定数是正数(s=0)还是负数(s=1),而对于数值 0 的符号位解释则作为特殊情况处理。
-
有效数字位 M(Significand)是二进制小数,它的取值范围为 1~2-ε,或者为 0~1-ε。它也被称为尾数位(Mantissa)、系数位(Coefficient),甚至还被称作“小数”。
-
指数位 E(Exponent)是 2 的幂(可能是负数),它的作用是对浮点数加权。
-
浮点数值
JAVA中的float
在java中可能通过Float.floatToIntBits()和 Float.intBitsToFloat()方法将数据转换为float和int。
public static void main(String[] args) {
float f = 5.0f;
int i = 0b01000000101000000000000000000000;
System.out.println("f->i:" + Float.floatToIntBits(f));
System.out.println("i->i:" + i);
//
System.out.println("i->f:" + Float.intBitsToFloat(i));
System.out.println("f->f:" + f);
}
f->i:1084227584
i->i:1084227584
i->f:5.0
f->f:5.0