2013-12-10 53 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清晨对我来说太早了。 –