bragboy
bragboy

Reputation: 35572

Java parse a number in exponential notation

I am trying to do a conversion of a String to integer for which I get a NumberFormatException. The reason is pretty obvious. But I need a workaround here. Following is the sample code.

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
  }
 }
}

I need the logic that goes in the comment section, a generic one would be nice. Thanks.

Upvotes: 37

Views: 64800

Answers (2)

Joachim Sauer
Joachim Sauer

Reputation: 308259

Use Double.valueOf() and cast the result to long:

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

Upvotes: 95

Bozho
Bozho

Reputation: 597402

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

But this adds overhead, which is not needed with smaller numbers. For numbers that are representable in long, use Joachim Sauer's solution.

Upvotes: 14

Related Questions