2011-06-20 179 views
2

我试图将以下十六进制字符串:“41630D54FFF68872”转换为9988776.0(float-64)。使用上面的64位十六进制时无限或NaN:Java - 将十六进制转换为IEEE-754 64位浮点数 - 双精度

对于单精度浮点数-32 I会做:

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

但这抛出一个:java.lang.NumberFormatException。

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

谢谢

回答

2

你要双精度,所以浮不正确的类 - 这是单精度。

取而代之,您需要Double类,特别是Double.longBitsToDouble

+0

long longBits = Long.valueOf(“hexString”,16).longValue(); double doubleValue = Double.longBitsToDouble(longBits); 谢谢! – Gevorg

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); 
相关问题