2010-09-16 10 views

Odpowiedz

16

Prosty odlew?

double d = (double)15552451L; 
+0

A jeśli jest to dosłowne '15552451d' –

+2

, nawet myślę, że rzutowanie nie jest konieczne, można utworzyć podwójne z długą wartością taką jak ta:" double d = 1234L; ". – crusam

+0

Prawdopodobnie nie - ale pytanie jest wystarczająco podstawowe, aby uzasadnić wprowadzenie koncepcji takiej jak casting. –

1

Co masz na myśli przez długo data typu?

Można rzucić długo podwójne:

double d = (double) 15552451L; 
+0

Sądzę, że długa data byłaby podobna do "wtorek, 19 września 24893243092333". –

93

Można po prostu zrobić:

double d = (double)15552451L; 

Albo można dostać podwójne z Long obiektu jako:

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

dlaczego -1? proszę wyjaśnić – YoK

+5

Nie potrzebujesz żadnego parsowania ciągów: 'Long.valueOf (15552451L) .doubleValue()' jeśli chcesz przejść przez 'Long'. Zauważ, że to jest to samo, wewnętrznie, jak rzutowanie z "podwójnego", z wyjątkiem tego, że robisz trochę auto/unboxingu. –

+0

@jjk to moja odpowiedź niepoprawna? czy to nie zadziała? – YoK

3

Czy szukasz konwersji binarnej?

double result = Double.longBitsToDouble(15552451L); 

To daje double z tym samym bitów jako long dosłowne.

Literały binarne lub heksadecymalne przydadzą się tutaj. Oto kilka przykładów.

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

(Zobacz Double.longBitsToDouble(long))

Można również uzyskać long z powrotem

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

(Zobacz Double.doubleToRawLongBits(double))

+0

To robi coś innego, zobacz jdoc (http://docs.oracle.com/javase/6/docs/api/java/lang/Double.html#longBitsToDouble(long)) –

+0

Tak. Ale nie sprecyzował * jak * chce przekonwertować 'long' na' double' (myślę, że casting jest jedną z pierwszych rzeczy, których uczysz się przy użyciu Javy), ani nie zaakceptował żadnej odpowiedzi. Może on chce uzyskać 'double' z tym samym wzorem bitowym co wartość' long'. Cóż, nie wiem. Po prostu podałem odpowiedź. – pvorb

+0

Dodałem dodatkowe informacje, więc odpowiedź jest bardziej cenna. – pvorb

1

Można spróbować czegoś takiego:

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); 

W ten sposób możemy konwertować typ Long na Double lub Float lub Int bez problemu, ponieważ łatwo jest przekonwertować wartość ciągu na Double lub Float lub Int.

+1

Zawsze lepiej jest dodać wyjaśnienie do kodu, który publikujesz jako odpowiedź, aby pomóc odwiedzającym zrozumieć, dlaczego jest to dobra odpowiedź. – abarisone

+0

Wykonano @abarisone –

Powiązane problemy