返回对应于给定位表示形式的 double
值。根据 ieee 754 浮点“双精度格式”位布局,参数被视为浮点值表示形式。
如果参数是 0x7ff0000000000000l
,则结果为正无穷大。
如果参数是 0xfff0000000000000l
,则结果为负无穷大。
如果参数值在 0x7ff0000000000001l
到 0x7fffffffffffffffl
之间或者在 0xfff0000000000001l
到 0xffffffffffffffffl
之间,则结果为 nan。java 提供的任何 ieee 754 浮点操作都不能区分具有不同位模式的两个同类型 nan 值。不同的 nan 值只能使用 double.doubletorawlongbits
方法区分。
在所有其他情况下,设 s、e 和 m 为可以通过以下参数计算的三个值:
int s = ((bits >> 63) == 0) ? 1 : -1;
int e = (int)((bits >> 52) & 0x7ffl);
long m = (e == 0) ?
(bits & 0xfffffffffffffl) << 1 :
(bits & 0xfffffffffffffl) | 0x10000000000000l;
那么浮点结果等于算术表达式 s·m·2e-1075 的值。
注意,此方法不能返回与 long
参数具有完全相同位模式的 double
nan。ieee 754 区分了两种 nan:quiet nan 和 signaling nan。这两种 nan 之间的差别在 java 中通常是不可见的。对 signaling nan 进行的算术运算将它们转换为具有不同(但通常类似)位模式的 quiet nan。但是在某些处理器上,只复制 signaling nan 也执行这种转换。特别是在复制 signaling nan 以将其返回给调用方法时,可能会执行这种转换。因此,longbitstodouble
可能无法返回具有 signaling nan 位模式的 double
值。所以,对于某些 long
值,doubletorawlongbits(longbitstodouble(start))
可能不 等于 start
。此外,尽管所有 nan 位模式(不管是 quiet nan 还是 signaling nan)都必须在上面提到的 nan 范围内,但表示 signaling nan 的特定位模式与平台有关。
- 参数:
bits
- 任意 long
整数。
- 返回:
- 具有相同位模式的
double
浮点值。