Java将64位整数解释为浮点数
问题描述:
我有一个64位整数,我想将其解释为浮点数。Java将64位整数解释为浮点数
我不是说我想重新分配类似4到4.0的东西。
我有后续的8个字节的数据:
DEC(INT):4619191942746344941
DEC(浮点):6.6666000000000000
十六进制:401AAA9930BE0DED
我有4619191942746344941存储在在我的java代码中变量。我如何将其转换为6.6666000000000000?
答
class Test {
public static void main(String[] args) {
System.out.println(Double.longBitsToDouble(0x401AAA9930BE0DEDl));
}
}
打印
6.6666
答
您可以转换double
的位表示出现这种情况是在一个long
到double
与Double.longBitsToDouble
方法。
long test = 0x401aaa9930be0dedL;
double d = Double.longBitsToDouble(test);
System.out.println(d);
输出:
6.6666
你总是可以投的结果double
到float
如果这就是你真正需要的。
接近这样的事情时的第一步是*阅读文档*。 – 2014-09-12 22:31:35
@ T.J.Crowder那么他应该阅读哪些文档?我们这些已经知道答案的人知道应该看哪个javadoc。那些不这样回答的人可能会说:“这是一个名为Java API规范的草垛,请去看看你的针。” – ajb 2014-09-12 22:56:04
@ajb:我已经开始使用'Double',然后如果需要继续使用'Long'(但当然,这不是必需的)。 – 2014-09-13 08:22:42