java.lang.NumberFormatException for converting string to long

Keval Shah picture Keval Shah · Oct 16, 2015 · Viewed 20k times · Source

I am trying to convert a string to long and it throws the NumberFormatException. I don't think it is beyond range of long at all.

Here is the code to convert, where count_strng is the String I want to convert to long. trim() function is not making any difference.

long sum_link = Long.parseLong(count_strng.trim());

Here is the stacktrace.

java.lang.NumberFormatException: For input string: "0.003846153846153846"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:441)
at java.lang.Long.parseLong(Long.java:483)

Anyone knows what is the exact issue here?

Answer

azurefrog picture azurefrog · Oct 16, 2015

Long.parseLong() is trying to parse the input string into a long. In Java, a long is defined such that:

The long data type is a 64-bit two's complement integer.

An integer is defined such that:

An integer (from the Latin integer meaning "whole") is a number that can be written without a fractional component.

The error you are getting shows the input string you are trying to parse is "0.003846153846153846", which clearly does have a fractional component.

You should use Double.parseDouble() if you want to parse a floating point number.