Java - 将十六进制转换为IEEE-754 64位浮点数 - 双精度

时间:2011-06-20 19:19:34

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

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

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

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

但抛出一个:java.lang.NumberFormatException:使用上面的64位十六进制时无限或NaN。

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

谢谢

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

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