概述
Java的Float类主要的作用就是对基本类型float进行封装,提供了一些处理float类型的方法,比如float到String类型的转换方法或String类型到float类型的转换方法,当然也包含与其他类型之间的转换方法
java float类型用IEEE754标准规定;
float占用4个字节,包括:
- 1bit(符号位):0表示正数,1表示负数;
- 8bits(指数位):float的偏移量为2^8 - 1,double的偏移量为2^11 - 1;
- 23bits(尾数位):实际尾数部分中的小数点后的数值,规约浮点数使用标准的二进制科学计数法表示,其尾数范围在 [1,2),非规约浮点数的尾数部分范围在(0,1)
示例:
8.25 的 float 表示
整数8的二进制:1000
小数0.25的二进制:.01
8.25整体的二进制:1000.01 → 1.00001 * 2^3
小数点左移 3 位,所以指数部分(3 + 127) = 130,二进制是 10000010
尾数:去掉小数点前面的1,为 00001,补充到 23 位,000 0100 0000 0000 0000 0000
最终 8.25 在内存中存储的二进制是:0100 0001 0000 0100 0000 0000 0000 0000
9.5 的 float 表示
9.5的二进制:1001.1 -> 1.0011 * 2^3
指数位是 (3 + 127)=130,二进制 10000010
尾数是 0011 000000 0000000000 000
最终 9.5 在内存中存储的二进制是:010000010 0011 000000 0000000000 000,和程序打印出来的一致。
类继承关系:
public final class Float extends Number implements Comparable<Float> {
public static final float POSITIVE_INFINITY = 1.0f / 0.0f; // 正无穷大
public static final float NEGATIVE_INFINITY = -1.0f / 0.0f; // 负无穷大