Conversie van lang naar dubbel in Java

Is er een manier om een Longgegevenstype te converteren naar doubleof double?

Ik moet bijvoorbeeld 15552451Lconverteren naar een doublegegevenstype.


Antwoord 1, autoriteit 100%

Je zou gewoon kunnen doen:

double d = (double)15552451L;

Of je zou dubbel kunnen krijgen van Long object als:

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

Antwoord 2, autoriteit 15%

Eenvoudig casten?

double d = (double)15552451L;

Antwoord 3, autoriteit 5%

Zoals eerder vermeld, kun je eenvoudig long werpen om te verdubbelen. Maar wees voorzichtigmet lange naar dubbele conversie, want lang naar dubbele is een versmallende conversiein Java.

Conversie van type double naar type long vereist een niet-triviale vertaling van een 64-bits drijvende-kommawaarde naar de 64-bits integer-representatie. Afhankelijk van de werkelijke runtime-waarde kan informatie verloren gaan.

bijv. volgend programma drukt 1 af, niet 0

   long number = 499999999000000001L;
    double converted = (double) number;
    System.out.println( number - (long) converted);

Antwoord 4, autoriteit 3%

Bent u op zoek naar de binaire conversie?

double result = Double.longBitsToDouble(15552451L);

Dit geeft je de doublemet hetzelfde bitpatroon als de longletterlijke.

Binaire of hexadecimale letterlijke waarden komen hier van pas. Hier zijn enkele voorbeelden.

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

(Zie Double. longBitsToDouble(lang))

Je kunt de longook terugkrijgen met

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

(Zie Double. doubleToRawLongBits(dubbel))


Antwoord 5, autoriteit 2%

Long i = 1000000;
String s = i + "";
Double d = Double.parseDouble(s);
Float f = Float.parseFloat(s);

Op deze manier kunnen we Long type zonder problemen converteren naar Double of Float of Int, omdat het gemakkelijk is om stringwaarde om te zetten naar Double of Float of Int.


Antwoord 6

Wat bedoel je met een lange datetype?

Je kunt een long casten naar een double:

double d = (double) 15552451L;

Antwoord 7

Je kunt zoiets als dit proberen:

long x = somevalue;
double y = Double.longBitsToDouble(x);

Antwoord 8

Ik denk dat het goed voor je is.

BigDecimal.valueOf([LONG_VALUE]).doubleValue()

Hoe zit het met deze code?
😀

Other episodes