Преобразование из Long в Double в Java

Можно ли преобразовать тип данных Long в Double или Double?

Например, мне нужно преобразовать 15552451L в тип данных Double.

Ответ 1

Вы можете просто сделать:

double d = (double)15552451L;

Или вы можете получить двойной объект Long, как:

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

Ответ 2

Простое литье?

double d = (double)15552451L;

Ответ 3

Вы ищете двоичное преобразование?

double result = Double.longBitsToDouble(15552451L);

Это даст вам double с тем же битовым рисунком, что и литерал long.

Здесь будут полезны бинарные или шестнадцатеричные литералы. Вот несколько примеров.

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

(См. Double.longBitsToDouble(длинный))

Вы также можете вернуть long с помощью

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

(См. Double.doubleToRawLongBits(double))

Ответ 4

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

Таким образом, мы можем преобразовать длинный тип в Double или Float или Int без каких-либо проблем, потому что легко преобразовать строковое значение в Double или Float или Int.

Ответ 5

Что вы подразумеваете под типом long date?

Вы можете наложить длинный на двойной:

double d = (double) 15552451L;

Ответ 6

Вы можете попробовать что-то вроде этого:

long x = somevalue;

double y = Double.longBitsToDouble(x);

Ответ 7

Как уже упоминалось, вы можете просто разыграть long, чтобы удвоить. Но будьте осторожны с длинным в двойное преобразование, потому что длинное в двойное - это сужающееся преобразование в Java.

Преобразование из типа double в тип long требует нетривиального перевода из 64-битного значения с плавающей точкой в 64-битное целочисленное представление. В зависимости от фактического значения времени выполнения информация может быть потеряна.

Например, следующая программа будет печатать 1, а не 0

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

Ответ 8

Я думаю, что это хорошо для вас.

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

Как насчет этого кода? : D