2010-09-16 44 views

Respuesta

16

¿Fundición simple?

double d = (double)15552451L; 
+0

Y si es un literal simplemente '15552451d' –

+2

Incluso creo que un molde no es necesario, puede crear un doble con un valor largo como este:" double d = 1234L; ". – crusam

+0

Probablemente no, pero la pregunta es lo suficientemente básica como para justificar la introducción de un concepto como el casting. –

1

¿Qué quiere decir por un fecha larga tipo?

Puede proyectar una larga a un doble:

double d = (double) 15552451L; 
+0

Supongo que una fecha larga sería algo así como "Martes, 19 de septiembre 24893243092333". –

93

Usted podría simplemente hacer:

double d = (double)15552451L; 

O usted podría obtener el doble del objeto siempre y cuando:

Long l = new Long(15552451L); 
    double d = l.doubleValue(); 
+2

¿por qué? por favor explique – YoK

+5

No necesita ninguna cadena de análisis allí: 'Long.valueOf (15552451L) .doubleValue()' si desea ir a través de 'Long'. Tenga en cuenta que esto es lo mismo, internamente, que el lanzamiento de un 'doble', excepto que está haciendo algo de auto/unboxing. –

+0

@jjk es mi respuesta incorrecta? ¿No funcionará? – YoK

3

Son estás buscando la conversión binaria?

double result = Double.longBitsToDouble(15552451L); 

Esto le dará la double con el mismo patrón de bits que la long literal.

Los literales binarios o hexadecimales serán útiles aquí. Aquí hay unos ejemplos.

double nan = Double.longBitsToDouble(0xfff0000000000001L); 
double positiveInfinity = Double.longBitsToDouble(0x7ff0000000000000L); 
double positiveInfinity = Double.longBitsToDouble(0xfff0000000000000L); 

(Ver Double.longBitsToDouble(long))

También puede obtener el long atrás con

long bits = Double.doubleToRawLongBits(Double.NaN); 

(Ver Double.doubleToRawLongBits(double))

+0

Esto hace algo más, vea el jdoc (http://docs.oracle.com/javase/6/docs/api/java/lang/Double.html#longBitsToDouble(long))) –

+0

Sí. Pero no especificó * cómo * quiere convertir 'long' a' double' (creo que el casting es una de las primeras cosas que aprende al usar Java) ni aceptó ninguna respuesta. Tal vez quiera obtener un 'doble' con el mismo patrón de bits que el valor' largo'. Bueno, no sé. Así que acabo de dar la respuesta. – pvorb

+0

Agregué información adicional, por lo que la respuesta es más valiosa. – pvorb

1

Usted puede intentar algo como esto:

long x = somevalue; 

double y = Double.longBitsToDouble(x); 
2
Long i = 1000000; 
String s = i + ""; 
Double d = Double.parseDouble(s); 
Float f = Float.parseFloat(s); 

De esta manera podemos convertir Long type a Double o Float o Int sin ningún problema porque es fácil convertir el valor de cadena a Double o Float o Int.

+1

Siempre es mejor agregar una explicación al código que está publicando como respuesta, por lo que ayudará a los visitantes a entender por qué esta es una buena respuesta. – abarisone

+0

Hecho @abarisone –

Cuestiones relacionadas