2013-12-10 106 views
0
String avgPageLoadTimeStr = row.get("avg_page_load_time"); 
Long avgPageLoadTime = Long.parseLong(avgPageLoadTimeStr); 

例如:如何字符串23323.00轉換爲長

avgPageLoadTimeStr = 52747.50; 

如何avgPageLoadTimeStr轉換爲Long

+3

發生了什麼事,當您使用的Long.parseLong() – SpringLearner

+0

可以使用'數學。#圓鋼(雙)',到雙圓爲長。請注意,您將丟失信息。 –

+0

什麼是時間單位? –

回答

7

52747.50是一個浮點數。所以,你應該首先將其解析到一個浮點數,然後舍入爲long值:

String avgPageLoadTimeStr = row.get("avg_page_load_time"); 
double d = Double.parseDouble(avgPageLoadTimeStr); 
long avgPageLoadTime = Math.round(d); 

根據你的需要,你也可以將它取整爲長值之前使用Math.floor()Math.ceil()

+2

請注意,'Math.floor'和'Math.ceil'返回一個'double'。 –

+0

謝謝,你說得對。我把最後一句話改了一點;-) – micha

+0

+1對OP的說明,你想要一個「長」而不是「長」。在這種情況下,只需投射就足夠了'long avgPageLoadTime =(long)Double.parseDouble(avgPageLoadTimeStr);' –

2

您將得到一個NumberFormatException,因爲「52747.50」是一個浮點數。

因此,您可以使用Double來解析它並獲得long值。

String avgPageLoadTimeStr = "52747.50"; 
Double doubleObj = new Double(avgPageLoadTimeStr); 
long longValue = doubleObj.longValue(); 
System.out.println(longValue); 

或者乾脆

long longValue = (long) Double.parseDouble(avgPageLoadTimeStr); 
+0

您不需要創建一個新的Double對象來解析爲double。 –

+1

@PeterLawrey是的,你是對的。這就是爲什麼我說「或乾脆...」:) :) –

+0

+1清晨對我來說太早了。 –