Java以指数表示法解析数字

时间:2010-04-27 14:38:51

标签: 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
  }
 }
}

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

2 个答案:

答案 0 :(得分:77)

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

Double.valueOf("9.18E+09").longValue()

答案 1 :(得分:13)

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

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