本文描述了在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
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
-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
-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
-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
-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
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。
💡 了解这些方法的正确使用对于处理浮点数转换非常有帮助,尤其是在涉及到数值精度和异常处理时。