Java parse a number in exponential notation
56,676
Solution 1
Use Double.valueOf()
and cast the result to long
:
Double.valueOf("9.18E+09").longValue()
Solution 2
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.

Author by
bragboy
I am a seriously passionate non-stop learner. I am an entrepreneur, love experimenting, and exploring new things. I blog here and occasionally here as well
Updated on April 28, 2020Comments
-
bragboy over 2 years
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.
-
bragboy over 12 yearsThis looks very clean. Thanks!
-
bragboy over 12 yearsNice solution.. Thank you. cant accept the answer now, have to wait for 7 more minutes. :)
-
Matt Byrne over 8 yearsOld post, but if you want to enforce exact long range (no truncation) and avoid rounding errors, use
new BigDecimal(numberString).longValueExact()