2010-09-16 25 views

回答

16

簡單鑄造?

double d = (double)15552451L; 
+0

如果它的一個字面只是'15552451d' – 2010-09-16 08:16:10

+2

我甚至認爲不需要轉換,您可以創建一個像這樣的長整型值的double:「double d = 1234L;」。 – crusam 2010-09-16 08:28:09

+0

可能不會 - 但問題是基本的足以保證引入像鑄造這樣的概念。 – 2010-09-16 08:32:29

1

你說的一個長日期類型是什麼意思?

可以投下長長的雙:

double d = (double) 15552451L; 
+0

我想,一個漫長的約會會像「週二,9月19日24893243092333」。 – 2013-04-26 14:39:40

93

你可以簡單地做:

double d = (double)15552451L; 

或者你可以從Long對象得到雙重的:

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

爲什麼-1?請解釋 – YoK 2010-09-16 08:26:38

+5

不需要任何字符串解析:「Long.valueOf(15552451L).doubleValue()'如果你想通過'Long'去。請注意,除了您正在進行一些自動/拆箱操作之外,這與內部來自'double'的投射相同。 – 2010-09-16 08:27:05

+0

@jjk是我的答案不正確?它會不會起作用? – YoK 2010-09-16 08:35:25

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 )) – 2013-05-28 15:59:05

+0

是的。但是他沒有具體說明*他想如何將'long'轉換爲'double'(我認爲使用Java時鑄件是你學習的第一件事情之一),他也不接受任何答案。也許他想用'long'的值來得到一個'double'。那麼,我不知道。所以我只是給出了答案。 – pvorb 2013-05-29 11:33:21

+0

我添加了其他信息,所以答案更有價值。 – pvorb 2013-05-29 11:46:26

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

這樣我們可以將Long類型轉換爲Double或Float或Int而沒有任何問題,因爲它很容易將字符串值轉換爲Double或Float或Int。

+1

最好給你發佈的代碼添加一個解釋,作爲答案,這樣可以幫助訪問者理解爲什麼這是一個很好的答案。 – abarisone 2016-07-07 06:30:36

+0

完成@abarisone – 2016-07-07 19:12:21