Czy istnieje sposób na przekonwertowanie Long
typu danych na Double
lub double
?
Na przykład muszę przekonwertować 15552451L
na double
typ danych.
java
type-conversion
Złupić
źródło
źródło
Long.valueOf(15552451L).doubleValue()
jeśli chcesz przejść przezLong
. Zauważ, że wewnętrznie jest to to samo, co rzut z adouble
, z wyjątkiem tego, że wykonujesz pewne automatyczne / rozpakowywanie.new
), w których nie można go wyeliminować.double d = 15552451L;
Proste odlewanie?
double d = (double)15552451L;
źródło
15552451d
Jak już wspomniano, możesz po prostu rzucać długo, aby podwoić. Ale bądź ostrożny z długo podwójnej konwersji, ponieważ długo podwójne jest konwersja zwężenie w Javie.
Konwersja z typu double na typ long wymaga nietrywialnego tłumaczenia z 64-bitowej wartości zmiennoprzecinkowej na reprezentację 64-bitowej liczby całkowitej. W zależności od rzeczywistej wartości czasu wykonywania informacje mogą zostać utracone.
np. następujący program wypisze 1 a nie 0
long number = 499999999000000001L; double converted = (double) number; System.out.println( number - (long) converted);
źródło
Szukasz konwersji binarnej?
double result = Double.longBitsToDouble(15552451L);
To da ci ten
double
sam wzór bitowy colong
dosłowny.Przydadzą się tutaj literały binarne lub szesnastkowe. 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żesz także dostać z
long
powrotem za pomocąlong bits = Double.doubleToRawLongBits(Double.NaN);
(Zobacz Double.doubleToRawLongBits (double) )
źródło
long
dodouble
(chyba odlew jest jedną z pierwszych rzeczy, które uczą się przy użyciu języka Java) ani nie ponosi żadnej odpowiedzi. Może chce otrzymaćdouble
taki sam wzór bitów jaklong
wartość. No nie wiem. Więc po prostu udzieliłem odpowiedzi.Long i = 1000000; String s = i + ""; Double d = Double.parseDouble(s); Float f = Float.parseFloat(s);
W ten sposób możemy bez problemu przekonwertować typ Long na Double, Float lub Int, ponieważ łatwo jest przekonwertować wartość ciągu na Double lub Float lub Int.
źródło
Co masz na myśli przez długi typ daty ?
Możesz rzucić długie na podwójne:
double d = (double) 15552451L;
źródło
Możesz spróbować czegoś takiego:
long x = somevalue; double y = Double.longBitsToDouble(x);
źródło
Myślę, że to jest dobre dla ciebie.
BigDecimal.valueOf([LONG_VALUE]).doubleValue()
A co z tym kodem? :RE
źródło