Double.LongBitsToDouble(Int64) 方法

定义

返回 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,则结果为负无穷大。

如果参数是范围 0x7ff0000000000001L0x7fffffffffffffffL 或范围 0xfff0000000000001L 中的 0xffffffffffffffffL任意值,则结果为 NaN。 Java提供的无 IEEE 754 浮点运算可以区分具有不同位模式的同一类型的两个 NaN 值。 NaN 的非重复值只能通过使用 Double.doubleToRawLongBits 该方法来区分。

在所有其他情况下,let sem 是三个可从参数计算的值:

<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 属性许可证中所述的术语使用。

适用于