Double.LongBitsToDouble(Int64) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回 double 对应于给定位表示形式的值。
[Android.Runtime.Register("longBitsToDouble", "(J)D", "")]
public static double LongBitsToDouble(long bits);
[<Android.Runtime.Register("longBitsToDouble", "(J)D", "")>]
static member LongBitsToDouble : int64 -> double
参数
- bits
- Int64
任何 long 整数。
返回
double具有相同位模式的浮点值。
- 属性
注解
返回 double 对应于给定位表示形式的值。 根据 IEEE 754 浮点“双格式”位布局,该参数被视为浮点值的表示形式。
如果参数为 0x7ff0000000000000L,则结果为正无穷大。
如果参数为 0xfff0000000000000L,则结果为负无穷大。
如果参数是范围 0x7ff0000000000001L 中 0x7fffffffffffffffL 或范围 0xfff0000000000001L 中的 0xffffffffffffffffL任意值,则结果为 NaN。 Java提供的无 IEEE 754 浮点运算可以区分具有不同位模式的同一类型的两个 NaN 值。 NaN 的非重复值只能通过使用 Double.doubleToRawLongBits 该方法来区分。
在所有其他情况下,let s、 e 和 m 是三个可从参数计算的值:
<blockquote>
{@code
int s = ((bits >> 63) == 0) ? 1 : -1;
int e = (int)((bits >> 52) & 0x7ffL);
long m = (e == 0) ?
(bits & 0xfffffffffffffL) << 1 :
(bits & 0xfffffffffffffL) | 0x10000000000000L;
}
</blockquote>
然后浮点结果等于数学表达式 s· 的值;m·2<sup> e-1075</sup>.
请注意,此方法可能无法返回 double 与参数完全相同的位模式的 long NaN。 IEEE 754 区分两种 NaN、安静 NaN 和 信号 NaN。 这两种 NaN 之间的差异在Java中通常不可见。 发出 NAN 信号的算术运算会使它们变成具有不同但通常相似的位模式的安静 NaN。 但是,在某些处理器上,仅复制信号 NaN 也会执行该转换。 具体而言,复制信号 NaN 以将其返回到调用方法可能会执行此转换。 因此 longBitsToDouble ,可能无法返回 double 具有信号 NaN 位模式的信号。 因此,对于某些 long 值, doubleToRawLongBits(longBitsToDouble(start)) 可能 不 相等 start。 此外,表示信号 NaN 的特定位模式依赖于平台;虽然所有 NaN 位模式(安静或信号)都必须位于上面标识的 NaN 范围内。
适用于 . 的 java.lang.Double.longBitsToDouble(long)Java 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。