双精度数字Double进制间转换

在 Java 中,Double 提供了toHexString()和toString()方法用于进制间转换。

toHexString() 转为双精度数字的十六进字符串

获取Double参数的十六进制字符串表示形式。

✍方法声明

public static String toHexString(Double d);

  • 📥入参:d为要转换的Double值。
  • 🪐返回值:参数的十六进制字符串表示形式。
    public static void main(String[] args) {
        String str1 = Double.toHexString(3.14159d);
        System.out.println(str1);
        String str2 = Double.toHexString(Double.NaN);
        System.out.println(str2);
        String str3 = Double.toHexString(Double.POSITIVE_INFINITY);
        System.out.println(str3);
        String str4 = Double.toHexString(Double.MAX_VALUE);
        System.out.println(str4);
        String str5 = Double.toHexString(0.00);
        System.out.println(str5);
    }
0x1.921f9f01b866ep1
NaN
Infinity
0x1.fffffffffffffp1023
0x0.0p0

下面提到的所有字符都是ASCI字符。

  • 如果参数为NaN,那么结果是字符串“NaN”。否则,结果是表示参数的符号和数值(绝对值)的字符串。
  • 如果符号为负,那么结果的第一个字符是’-‘(u002D);如果符号为正,则结果中不显示符号字符。
  • 如果f为无穷大,则用字符串“Infinity”表示;因此,正无穷大生成结果“Infinity”,负无穷大生成结果“-Infinity”。
  • 如果f为0,则用字符串“0x0.0p0”表示;因此,负0生成结果“0x0.0p0”,正0生成结果“0x0.0p0”。
  • 如果f是具有标准化表示形式的Double值,则使用子字符串表示有效位数和指数。有效位数用字符串“0x1.”表示,后跟该有效位数小数部分的小写十六进制表示形式。除非所有位数都为0,否则移除十六进制表示形式中的尾部0,在所有位数为0的情况下,可以用一个0表示。然后用“p”表示指数,后跟无偏指数的十进制字符串,该值与对指数值调用Integer.toString生成的值相同。
  • 如果f是具有subnormal表示形式的Double值,则用字符“Ox0.”表示有效位数,后跟该有效位数小数部分的十六进制表示形式。移除十六进制表示形式中的尾部0。然后用“p-l26”表示指数。注意,在subnormal有效位数中,至少必须有一个非0位数。

toString() 生成双精度数字的十进制字符串

返回Double参数的字符串表示形式。

✍方法声明

public static String toString(Double d);

  • 📥入参:d为要转换的Double参数。
  • 🪐返回值:参数的字符串表示形式。

下面代码创建Double对象d,并通过Double类的toString()方法获取对象d1的参数值的字符串表示形式。

    public static void main(String[] args) {
        String str1 = Double.toString(1.234);
        System.out.println(str1);
        String str2 = Double.toString(Double.NaN);
        System.out.println(str2);
        String str3 = Double.toString(Double.POSITIVE_INFINITY);
        System.out.println(str3);
        String str4 = Double.toString(Double.MAX_VALUE);
        System.out.println(str4);
        String str5 = Double.toString(0.00);
        System.out.println(str5);
        String str6 = Double.toString(-0.00);
        System.out.println(str6);
    }
1.234
NaN
Infinity
1.7976931348623157E308
0.0
-0.0

✍方法声明

返回此Double对象的字符串表示形式。使用此对象表示的基本double值被转换为一个字符串,这与带一个参数的toString方法完全一样。

public String toString()

  • 🪐返回值:参数的字符串表示形式。

下面代码创建Double对象d,并通过Double类的toString()方法获取对象d的参数值的字符串表示形式。

    public static void main(String[] args) {
        Double d1 = Double.valueOf(1.234);
        String str1 = d1.toString();
        Double d2 = Double.valueOf(Double.NaN);
        String str2 = d2.toString();
    }

📝总结

💡 Double类提供了toString()方法来获取Double对象或double值的字符串表示形式。
💡 了解Double类的方法对于处理double值的字符串表示和转换非常重要,尤其是在涉及数值格式化和解析时。

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