单精度数字类 Float 与其他类型转换

本文描述了在Java中Float类的多种转换方法以及parseFloat()方法的使用。

byteValue() 获取byte值

以byte形式返回此Float的值(通过强制转换为byte)。

✍方法声明

public byte byteValue();

  • 🪐返回值:转换为byte类型的由此对象所表示的Float值。
    public static void main(String[] args) {
        Float f1 = Float.valueOf("-1.99F");
        Float f2 = Float.valueOf("10086");
        Float f3 = Float.valueOf(Float.NaN);
        byte b1 = f1.byteValue();
        byte b2 = f2.byteValue();
        byte b3 = f3.byteValue();
        System.out.println(f1 + " byte value " + b1);
        System.out.println(f2 + " byte value " + b2);
        System.out.println(f3 + " byte value " + b3);
    }
-1.99 byte value -1
10086.0 byte value 102
NaN byte value 0
  • 转换为 byte 值时,小数部分会被忽略
  • 转换为 byte 值时,超过 byte 精度部分数值不可控
  • 转换为 byte 值时,NaN 会转为 0
  • 转换为 byte 值时,-Infinity 会转为 0
  • 转换为 byte 值时,Infinity 会转为 -1

doublevalue() 获取double值

返回此Float对象的double值。

✍方法声明

public double doubleValue()

  • 🪐返回值:此对象表示的float值被转换为double类型,并返回转换的结果。
    public static void main(String[] args) {
        Float f1 = Float.valueOf("123.001");
        Float f2 = Float.valueOf("-1.99F");
        Float f3 = Float.valueOf(Float.MAX_VALUE);
        double b1 = f1.doubleValue();
        double b2 = f2.doubleValue();
        double b3 = f3.doubleValue();
        System.out.println(f1 + " double value " + b1);
        System.out.println(f2 + " double value " + b2);
        System.out.println(f3 + " double value " + b3);
    }
123.001 double value 123.0009994506836
-1.99 double value -1.9900000095367432
3.4028235E38 double value 3.4028234663852886E38
  • float 转 double,数据会失真

floatValue() 获取float值

返回此Float对象的float值。

✍方法声明

public float floatValue()

  • 🪐返回值:此对象表示的float值。
    public static void main(String[] args) {
        Float f1 = Float.valueOf("123.001");
        Float f2 = Float.valueOf("-1.99F");
        Float f3 = Float.valueOf(Float.MAX_VALUE);
        float b1 = f1.floatValue();
        float b2 = f2.floatValue();
        float b3 = f3.floatValue();
        System.out.println(f1 + " float value " + b1);
        System.out.println(f2 + " float value " + b2);
        System.out.println(f3 + " float value " + b3);
    }
123.001 float value 123.001
-1.99 float value -1.99
3.4028235E38 float value 3.4028235E38

intValue方法 获取int值

将此Float值以int形式返回(强制转换为int类型)。

✍方法声明

public int intValue();

  • 🪐返回值:此对象表示的float值,该值被转换为int类型。
    public static void main(String[] args) {
        Float f1 = Float.valueOf("123.001");
        Float f2 = Float.valueOf("-1.99F");
        Float f3 = Float.valueOf(Float.MAX_VALUE);
        int b1 = f1.intValue();
        int b2 = f2.intValue();
        int b3 = f3.intValue();
        System.out.println(f1 + " int value " + b1);
        System.out.println(f2 + " int value " + b2);
        System.out.println(f3 + " int value " + b3);
    }
123.001 int value 123
-1.99 int value -1
3.4028235E38 int value 2147483647

shortValue() 获取short值

将Float值以short形式返回(强制转换为short)。

✍方法声明

public short shortValue();

  • 🪐返回值:此对象表示的float值,该值被转换为short类型。
    public static void main(String[] args) {
        Float f1 = Float.valueOf("123.001");
        Float f2 = Float.valueOf("-1.99F");
        Float f3 = Float.valueOf(Float.MAX_VALUE);
        Float f4 = Float.valueOf(Float.NaN);
        short b1 = f1.shortValue();
        short b2 = f2.shortValue();
        short b3 = f3.shortValue();
        short b4 = f4.shortValue();
        System.out.println(f1 + " short value " + b1);
        System.out.println(f2 + " short value " + b2);
        System.out.println(f3 + " short value " + b3);
        System.out.println(f4 + " short value " + b4);
    }
123.001 short value 123
-1.99 short value -1
3.4028235E38 short value -1
NaN short value 0

parseFloat() 将宁符串解析成float值

将指定的字符串解析成一个新的float值。返回值为用字符串参数表示的float值。

✍方法声明

public static float parseFloat(String s) throws NumberFormatException;

  • 📥入参:s为要解析的字符串。
  • 🪐返回值:用字符串参数表示的float值。
  • 🐛抛出异常NumberFormatException:如果字符串不包含可解析的float值。
    public static void main(String[] args) {
        float f1 = Float.parseFloat("123.456");
        float f2 = Float.parseFloat("+36.009F");
        float f3 = Float.parseFloat("-.86");
        float f4 = Float.parseFloat("56.7D");
        float f5 = Float.parseFloat("NaN");
        System.out.println(f1);
        System.out.println(f2);
        System.out.println(f3);
        System.out.println(f4);
        System.out.println(f5);
    }
123.456
36.009
-0.86
56.7
NaN
    public static void main(String[] args) {
        float f1 = Float.parseFloat("Nan");//java.lang.NumberFormatException: For input string: "Nan"
        float f2 = Float.parseFloat("1B");//java.lang.NumberFormatException: For input string: "1B"
        float f3 = Float.parseFloat("MAX");//java.lang.NumberFormatException: For input string: "MAX"
        float f4 = Float.parseFloat("0x12.3");//java.lang.NumberFormatException: For input string: "0x12.3"
    }

📝总结

💡 Float类提供了多种方法来转换Float对象表示的float值到不同的数值类型。
💡 在转换float到整数类型时,需要注意精度损失,特别是当转换的值接近或超出整数类型的范围时。
💡 parseFloat()方法用于将字符串解析为float值,如果字符串不是有效的浮点数表示,则会抛出NumberFormatException。
💡 了解这些方法的正确使用对于处理浮点数转换非常有帮助,尤其是在涉及到数值精度和异常处理时。

转载请注明出处:码谱记录 » 单精度数字类 Float 与其他类型转换
标签: