用于将字符串转换为long的java.lang.NumberFormatException

Kev*_*hah 4 java string numberformatexception

我试图将一个字符串转换为long,它会抛出NumberFormatException.我不认为它超出了范围long.

这是要转换的代码,其中count_strng是我想要转换为long的String.trim()功能没有任何区别.

long sum_link = Long.parseLong(count_strng.trim());
Run Code Online (Sandbox Code Playgroud)

这是堆栈跟踪.

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)
Run Code Online (Sandbox Code Playgroud)

谁知道这里的确切问题是什么?

azu*_*rog 9

Long.parseLong()试图将输入字符串解析为long.在Java中,一个long定义成:

长数据类型是64位二进制补码整数.

定义一个整数,使得:

整数(来自拉丁整数,意思是"整数")是可以在没有小数分量的情况下写入的数字.

您得到的错误显示您尝试解析的输入字符串"0.003846153846153846",显然一个小数部分.

Double.parseDouble()如果要解析浮点数,则应该使用.


Sac*_*cJn 7

由于您的输入字符串实际上不是a long,因此解析long将抛出NumberFormatException.而是试试这个

Double d = Double.parseDouble(count_strng.trim());
Long l = d.longValue();
Run Code Online (Sandbox Code Playgroud)

  • 小点,但d.longValue()不会舍入 - 它只是像一个演员那样砍掉小数部分. (2认同)