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 или в диапазоне 0xfff0000000000001L по 0xffffffffffffffffL, результатом является NaN. Никакие операции с плавающей запятой IEEE 754, предоставляемые Java, не могут различать два значения NaN одного типа с разными битовыми шаблонами. Различные значения NaN можно различить только с помощью Double.doubleToRawLongBits метода .

Во всех остальных случаях пусть 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>

Затем результат с плавающей запятой равен значению математического выражения& middot; m· 2<sup> e-1075</sup.>

Обратите внимание, что этот метод может не возвращать double NaN с тем же битового шаблона, что и long аргумент . IEEE 754 различает два типа 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).

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License Creative Commons 2.5 Attribution License.

Применяется к