Java以指数表示法解析数字

我试图将String转换为整数,我得到一个NumberFormatException 。 原因很明显。 但我需要一个解决方法。 以下是示例代码。

 public class NumberFormatTest { public static void main(String[] args) { String num = "9.18E+09"; try{ long val = Long.valueOf(num); }catch(NumberFormatException ne){ //Try to convert the value to 9180000000 here } } } 

我需要评论部分中的逻辑,通用的一个会很好。 谢谢。

使用Double.valueOf()并将结果转换为long

 Double.valueOf("9.18E+09").longValue() 
 BigDecimal bd = new BigDecimal("9.18E+09"); long val = bd.longValue(); 

但这会增加开销,而小数字则不需要。 对于可以long表示的数字,请使用Joachim Sauer的解决方案。