語言

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,則結果為負無限大。

若參數為 範圍內0x7ff0000000000001L的任意值0x7fffffffffffffffL,或 0xfff0000000000001L0xffffffffffffffffL範圍內,則結果為 NaN。 Java 提供的 IEEE 754 浮點運算無法區分同類型但位元模式不同的兩個 NaN 值。 NaN的不同值僅能透過使用該 Double.doubleToRawLongBits 方法區分。

在其他所有情況下,令 sem 為三個可由參數計算的值:

<引用>

{@code
            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·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 文件 java.lang.Double.longBitsToDouble(long)

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於