Float
Float是java八大基础类型float的包装类。
定义
public final class Float extends Number implements Comparable<Float> {}
同Double一样继承的Number类,实现了Comparable接口。
构造方法
比Double多了一种构造方法。
属性
//正无穷大,它等于 Float.intBitsToFloat(0x7f800000) 返回的值
public static final float POSITIVE_INFINITY = 1.0f / 0.0f;
//负无穷,它等于 Float.intBitsToFloat(0xff800000) 返回的值
public static final float NEGATIVE_INFINITY = -1.0f / 0.0f;
//NaN not a number 它等于 Float.intBitsToFloat(0x7fc00000) 返回的值
public static final float NaN = 0.0f / 0.0f;
// 能够表示的最大值,3.4028235e+38f
public static final float MAX_VALUE = 0x1.fffffeP+127f;
//标准化的最小值 1.17549435E-38f
public static final float MIN_NORMAL = 0x1.0p-126f;
//非标准化最小值 1.4e-45f
public static final float MIN_VALUE = 0x0.000002P-126f;
//指数真值的有效的最大值
public static final int MAX_EXPONENT = 127;
//指数真值的有效的最小值
public static final int MIN_EXPONENT = -126;
//用来以二进制补码形式表示 float 值的比特位数
public static final int SIZE = 32;
//二进制补码形式表示 float 值的字节数
public static final int BYTES = SIZE / Byte.SIZE;
//表示基本类型 float 的 Class 实例
@SuppressWarnings("unchecked")
public static final Class<Float> TYPE = (Class<Float>) Class.getPrimitiveClass("float");
方法
//转String
public static String toString(float f) {
return FloatingDecimal.toJavaFormatString(f);
}
//将Float的二进制转成String字符串
public static String toHexString(float f) {
if (Math.abs(f) < FloatConsts.MIN_NORMAL
&& f != 0.0f ) {// float subnormal
// Adjust exponent to create subnormal double, then
// replace subnormal double exponent with subnormal float
// exponent
String s = Double.toHexString(Math.scalb((double)f,
/* -1022+126 */
DoubleConsts.MIN_EXPONENT-
FloatConsts.MIN_EXPONENT));
return s.replaceFirst("p-1022$", "p-126");
}
else // double string will be the same as float string
return Double.toHexString(f);
}
//将String对象返回一个Float对象昂
public static Float valueOf(String s) throws NumberFormatException {
return new Float(parseFloat(s));
}
//将基础类型float,新建返回一个Float
public static Float valueOf(float f) {
return new Float(f);
}
//调用本地方法将字符转成Float对象
public static float parseFloat(String s) throws NumberFormatException {
return FloatingDecimal.parseFloat(s);
}
//判断是否非数值
public static boolean isNaN(float v) {
return (v != v);
}
//判读是否无穷大
public static boolean isInfinite(float v) {
return (v == POSITIVE_INFINITY) || (v == NEGATIVE_INFINITY);
}
//判断是否负无穷
public static boolean isFinite(float f) {
return Math.abs(f) <= FloatConsts.MAX_VALUE;
}
//基础类型强转
public byte byteValue() {
return (byte)value;
}
public short shortValue() {
return (short)value;
}
public int intValue() {
return (int)value;
}.....
//获取哈希码
public int hashCode() {
return Float.hashCode(value);
}
//重写equals
public boolean equals(Object obj) {
return (obj instanceof Float)
&& (floatToIntBits(((Float)obj).value) == floatToIntBits(value));
}
//求和
public static float sum(float a, float b) {
return a + b;
}
//比谁大
public static float max(float a, float b) {
return Math.max(a, b);
}
//比谁小
public static float min(float a, float b) {
return Math.min(a, b);
}