Double.LongBitsToDouble(Int64) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Devuelve el double valor correspondiente a una representación de bits determinada.
[Android.Runtime.Register("longBitsToDouble", "(J)D", "")]
public static double LongBitsToDouble(long bits);
[<Android.Runtime.Register("longBitsToDouble", "(J)D", "")>]
static member LongBitsToDouble : int64 -> double
Parámetros
- bits
- Int64
cualquier long entero.
Devoluciones
el double valor de punto flotante con el mismo patrón de bits.
- Atributos
Comentarios
Devuelve el double valor correspondiente a una representación de bits determinada. El argumento se considera una representación de un valor de punto flotante según el diseño de bits "formato doble" de punto flotante IEEE 754.
Si el argumento es 0x7ff0000000000000L, el resultado es infinito positivo.
Si el argumento es 0xfff0000000000000L, el resultado es infinito negativo.
Si el argumento es cualquier valor del intervalo 0x7ff0000000000001L a través 0x7fffffffffffffffL o del intervalo 0xfff0000000000001L a través 0xffffffffffffffffLde , el resultado es naN. Ninguna operación de punto flotante IEEE 754 proporcionada por Java puede distinguir entre dos valores NaN del mismo tipo con patrones de bits diferentes. Los valores distintos de NaN solo se pueden distinguir mediante el uso del Double.doubleToRawLongBits método .
En todos los demás casos, let s, e y m son tres valores que se pueden calcular desde el argumento :
<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>
A continuación, el resultado de punto flotante es igual al valor de la expresión matemática s· m· 2<sup> e-1075</sup.>
Tenga en cuenta que es posible que este método no pueda devolver un double NaN con exactamente el mismo patrón de bits que el long argumento. IEEE 754 distingue entre dos tipos de NaN, naN silenciosos y naN de señalización. Las diferencias entre los dos tipos de NaN generalmente no son visibles en Java. Las operaciones aritméticas en la señalización naN las convierten en naN silenciosas con un patrón de bits diferente, pero a menudo similar. Sin embargo, en algunos procesadores simplemente copia una señal NaN también realiza esa conversión. En concreto, copiar un NaN de señalización para devolverlo al método de llamada puede realizar esta conversión. Por lo tanto longBitsToDouble , es posible que no pueda devolver un double con un patrón de bits NaN de señalización. Por lo tanto, para algunos long valores, doubleToRawLongBits(longBitsToDouble(start)) puede que no sea igual a start. Además, los patrones de bits concretos que representan naN de señalización dependen de la plataforma; aunque todos los patrones de bits NaN, quiet o signaling, deben estar en el intervalo NaN identificado anteriormente.
Documentación de Java para java.lang.Double.longBitsToDouble(long).
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.