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.