【问题标题】:Java - Convert hex to IEEE-754 64-bit float - double precisionJava - 将十六进制转换为 IEEE-754 64 位浮点数 - 双精度
【发布时间】:2011-09-18 23:09:40
【问题描述】:

我正在尝试将以下十六进制字符串:“41630D54FFF68872”转换为 9988776.0 (float-64)。

使用单精度 float-32 我会这样做:

int intBits = Long.valueOf("hexFloat32", 16).intValue();
float floatValue = Float.intBitsToFloat(intBits);

但这会抛出:java.lang.NumberFormatException: Infinite or NaN when using the 64-bits hex above.

如何将十六进制转换为使用 64 位 IEEE-754 编码的双精度浮点数?

谢谢

【问题讨论】:

    标签: java 64-bit floating-point hex ieee-754


    【解决方案1】:

    你想要双精度,所以 Float 不是正确的类 - 那是单精度。

    相反,您需要 Double 类,特别是 Double.longBitsToDouble。

    【讨论】:

    • long longBits = Long.valueOf("hexString",16).longValue(); double doubleValue = Double.longBitsToDouble(longBits);谢谢!
    【解决方案2】:

    几乎正确。只需在 valueOf 调用中省略双引号即可:

    String hexString = "41630D54FFF68872";
    long longBits = Long.valueOf(hexString,16).longValue(); 
    double doubleValue = Double.longBitsToDouble(longBits);
    System.out.println( "double float hexString is = " + doubleValue );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-01
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多