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 方法區分。
在其他所有情況下,令 s、 e 和 m 為三個可由參數計算的值:
<引用>
{@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 所創建與分享的作品,並依授權條款所描述的使用進行修改。