从 Double.toLongBits 创建的 long 中获取双精度值

Jim*_*Jim 2 java double types decimal long-integer

有没有办法将long我从Double.toLongBits后面得到的 a 反转为 a Double
以下不起作用:

Double n = 171.30672219;
System.out.println(Double.doubleToLongBits(n));
System.out.println(new Double(Double.doubleToLongBits(n)));  
Run Code Online (Sandbox Code Playgroud)

这打印:

4640231336019091517
4.6402313360190915E18

虽然我想找回171.30672219

Swe*_*per 6

正如文档所说doubleToLongBits

在所有情况下,结果都是一个长整数,当将其提供给longBitsToDouble(long)方法时,将生成与参数相同的浮点值doubleToLongBits(除了所有 NaN 值都折叠为单个“规范”NaN 值)。

double n = 171.30672219;
System.out.println(Double.doubleToLongBits(n));
System.out.println(Double.longBitsToDouble(Double.doubleToLongBits(n)));
Run Code Online (Sandbox Code Playgroud)