Java将64位整数解释为浮点数

问题描述:

我有一个64位整数,我想将其解释为浮点数。Java将64位整数解释为浮点数

我不是说我想重新分配类似4到4.0的东西。

我有后续的8个字节的数据:

DEC(INT):4619191942746344941

DEC(浮点):6.6666000000000000

十六进制:401AAA9930BE0DED

我有4619191942746344941存储在在我的java代码中变量。我如何将其转换为6.6666000000000000?

+0

接近这样的事情时的第一步是*阅读文档*。 – 2014-09-12 22:31:35

+0

@ T.J.Crowder那么他应该阅读哪些文档?我们这些已经知道答案的人知道应该看哪个javadoc。那些不这样回答的人可能会说:“这是一个名为Java API规范的草垛,请去看看你的针。” – ajb 2014-09-12 22:56:04

+0

@ajb:我已经开始使用'Double',然后如果需要继续使用'Long'(但当然,这不是必需的)。 – 2014-09-13 08:22:42

使用Double.longBitsToDouble

class Test { 
    public static void main(String[] args) { 
    System.out.println(Double.longBitsToDouble(0x401AAA9930BE0DEDl)); 
    } 
} 

打印

6.6666 

您可以转换double的位表示出现这种情况是在一个longdoubleDouble.longBitsToDouble方法。

long test = 0x401aaa9930be0dedL; 
double d = Double.longBitsToDouble(test); 
System.out.println(d); 

输出:

6.6666 

你总是可以投的结果doublefloat如果这就是你真正需要的。