本文描述了Java中Float类的toHexString()和toString()方法的使用。
toHexString() 生成浮点数的十六进制字符串
获取float参数的十六进制字符串表示形式。
✍方法声明
public static String toHexString(float f);
- 📥入参:f为要转换的float值。
- 🪐返回值:参数的十六进制字符串表示形式。
public static void main(String[] args) {
String str1 = Float.toHexString(20f);
String str2 = Float.toHexString(1.23F);
String str3 = Float.toHexString(-2.3f);
String str4 = Float.toHexString(0.0f);
String str5 = Float.toHexString(Float.NaN);
String str6 = Float.toHexString(Float.MAX_VALUE);
String str7 = Float.toHexString(Float.POSITIVE_INFINITY);
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
System.out.println(str4);
System.out.println(str5);
System.out.println(str6);
System.out.println(str7);
}
0x1.4p4
0x1.3ae148p0
-0x1.266666p1
0x0.0p0
NaN
0x1.fffffep127
Infinity
0x1.3ae148p0
-0x1.266666p1
0x0.0p0
NaN
0x1.fffffep127
Infinity
下面提到的所有字符都是ASCI字符。
- 如果参数为NaN,那么结果是字符串“NaN”。否则,结果是表示参数的符号和数值(绝对值)的字符串。
- 如果符号为负,那么结果的第一个字符是’-‘(u002D);如果符号为正,则结果中不显示符号字符。
- 如果f为无穷大,则用字符串“Infinity”表示;因此,正无穷大生成结果“Infinity”,负无穷大生成结果“-Infinity”。
- 如果f为0,则用字符串“0x0.0p0”表示;因此,负0生成结果“0x0.0p0”,正0生成结果“0x0.0p0”。
- 如果f是具有标准化表示形式的float值,则使用子字符串表示有效位数和指数。有效位数用字符串“0x1.”表示,后跟该有效位数小数部分的小写十六进制表示形式。除非所有位数都为0,否则移除十六进制表示形式中的尾部0,在所有位数为0的情况下,可以用一个0表示。然后用“p”表示指数,后跟无偏指数的十进制字符串,该值与对指数值调用Integer.toString生成的值相同。
- 如果f是具有subnormal表示形式的float值,则用字符“0x0.”表示有效位数,后跟该有效位数小数部分的十六进制表示形式。移除十六进制表示形式中的尾部0。然后用“p126”表示指数。注意,在subnormal有效位数中,至少必须有一个非0位数。
toString()方法 生成浮点数的十进制字符串
返回float参数的字符串表示形式。
✍方法声明
public static String toString(float f);
- 📥入参:f为要转换的float参数。
- 🪐返回值:参数的字符串表示形式。
下面代码创建Float对象并通过Float类的toString()方法获取对象的参数值的字符串表示形式。
public static void main(String[] args) {
String str1 = Float.toString(123.001f);
String str2 = Float.toString(-99.999f);
String str3 = Float.toString(Float.MAX_VALUE);
String str4 = Float.toString(Float.NaN);
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
System.out.println(str4);
}
123.001
-99.999
3.4028235E38
NaN
-99.999
3.4028235E38
NaN
✍方法声明
返回此Float对象的字符串表示形式。使用此对象表示的基本float值被转换为一个String,此方法与带一个参数的toString方法完全一样。其内部调用的是Float.toString(value)
。
public String toString()
- 🪐返回值:此对象的String表示。
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);
String str1 = f1.toString();
String str2 = f2.toString();
String str3 = f3.toString();
String str4 = f4.toString();
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
System.out.println(str4);
}
123.001
-1.99
3.4028235E38
NaN
-1.99
3.4028235E38
NaN
📝总结
💡 Float类提供了toHexString()方法来获取float值的十六进制字符串表示,这在需要精确表示浮点数的二进制内容时非常有用。
💡 toString()方法用于获取float值或Float对象的字符串表示形式,对于调试和格式化输出很有帮助。
💡 在使用Float.toString(float f)方法时,应该注意传入的是一个float字面量,并且可能需要使用F后缀来明确表示这是一个float字面量。
💡 了解Float类的字符串表示方法对于处理浮点数的字符串转换非常重要,尤其是在涉及数值格式化和解析时。