单精度数字Float进制间转换

本文描述了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

下面提到的所有字符都是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

✍方法声明

返回此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

📝总结

💡 Float类提供了toHexString()方法来获取float值的十六进制字符串表示,这在需要精确表示浮点数的二进制内容时非常有用。
💡 toString()方法用于获取float值或Float对象的字符串表示形式,对于调试和格式化输出很有帮助。
💡 在使用Float.toString(float f)方法时,应该注意传入的是一个float字面量,并且可能需要使用F后缀来明确表示这是一个float字面量。
💡 了解Float类的字符串表示方法对于处理浮点数的字符串转换非常重要,尤其是在涉及数值格式化和解析时。

转载请注明出处:码谱记录 » 单精度数字Float进制间转换
标签: