2010-09-16 3 views

ответ

16

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

double d = (double)15552451L; 
+0

И если это буквально просто '15552451d' –

+2

Я даже думаю, что актер не нужен, вы можете создать двойной с длинным значением, подобным этому:« double d = 1234L; ». – crusam

+0

Наверное, нет - но вопрос достаточно прост, чтобы гарантировать введение концепции, подобной кастингу. –

1

Что вы имеете в виду по долго дате типа?

Вы можете бросить долго двойной:

double d = (double) 15552451L; 
+0

Я предполагаю, что долгая дата будет чем-то вроде «Вторник, 19 сентября 24893243092333». –

93

Вы могли бы просто сделать:

double d = (double)15552451L; 

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

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

почему -1? объясните, пожалуйста, – YoK

+5

Не нужно никакого синтаксического анализа строк: 'Long.valueOf (15552451L) .doubleValue()', если вы хотите пройти через 'Long'. Обратите внимание, что это одно и то же, внутренне, как приведение из 'double', за исключением того, что вы выполняете автоматическое/unboxing. –

+0

@jjk - мой ответ неправильный? это не сработает? – YoK

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 назад с

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

(см Double.doubleToRawLongBits(double))

+0

Это делает что-то еще, см. Jdoc (http://docs.oracle.com/javase/6/docs/api/java/lang/Double.html#longBitsToDouble(long)) –

+0

Да. Но он не указывал *, как он хочет конвертировать 'long' в' double' (я думаю, что кастинг - это одна из первых вещей, которую вы узнаете при использовании Java), и он не принял никакого ответа. Возможно, он хочет получить «double» с тем же битовым шаблоном, что и значение «long». Ну, я не знаю. Поэтому я просто дал ответ. – pvorb

+0

Я добавил дополнительную информацию, поэтому ответ более ценен. – pvorb

1

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

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

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

+1

Всегда лучше добавлять объяснения к коду, который вы публикуете в качестве ответа, так что это поможет посетителям понять, почему это хороший ответ. – abarisone

+0

Done @abarisone –

Смежные вопросы