当前位置: 首页 > 知识库问答 >
问题:

Java语言lang.NumberFormatException用于将字符串转换为long[关闭]

包建义
2023-03-14

此问题是由打字错误或无法再复制的问题引起的。虽然这里可能有类似的问题,但这一问题的解决方式不太可能对未来的读者有所帮助。

我试图将字符串转换为long,它会引发NumberFormatException。我不认为这超出了长的范围。

这是要转换的代码,其中count_strng是我要转换为long的字符串。trim()函数没有任何区别。

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

这是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)

有人知道这里的确切问题是什么吗?

共有3个答案

南门意蕴
2023-03-14

long类型表示数学整数。(整数也表示数学整数,但范围比Long小)

Long和Integer不能表示具有小数点或小数部分的值。解析器通过拒绝您提供的字符串来强制执行此规则。

如果要分析可能包含小数点的字符串并将结果值用作Long,则必须首先将其作为Double进行分析,然后将其转换为Long。

从Double到Long的转换可以通过以下两种方式之一完成:截断小数部分(基本上只是忽略它)和数学舍入小数部分。要截断,请使用强制转换,要舍入请使用Math.round()方法。

Hers'a举例:

String s = "0.51"; // Greater than 0.50 so will round up
double d = Double.parseDouble(s);

System.out.println(d); // The parsed double

System.out.println((int)d); // Double converted to int and truncated (fractional part dropped)

System.out.println(Math.round(d)); // Double converted to int with mathematical rounding

此代码将打印

0.51
0
1

另外:trim()是一个字符串函数,它从字符串中删除空白字符-它不做任何计算。

弓智明
2023-03-14

由于输入字符串实际上不是长的,解析为长的将引发数字格式异常。不如试试这个

Double d = Double.parseDouble(count_strng.trim());
Long l = d.longValue();
裴嘉良
2023-03-14

Long.parseLong()试图将输入字符串解析为long。在Java中,long的定义如下:

长数据类型是64位2的补码整数。

整数的定义如下:

整数(来源于拉丁文整数,意思是“整数”)是一个不含小数成分的数字。

您得到的错误显示,您试图解析的输入字符串是0.0038461538461546153846,它显然有一个分数分量。

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

 类似资料:
  • 您好,我正在尝试将excel表数据保存到MySQL数据库中。为此,我使用Apache Poi。我在Apache Poi中使用DataForcat获取单元格值。我成功地将单元格值作为字符串格式获取,但我试图将字符串值更改为Long我正在获取NumberFormatException。我正在尝试下面的代码。请尝试解决我的问题。 非常感谢。 这是控制台中的错误堆栈跟踪。

  • 问题内容: 如何将字符串转换为long。 为了你 所以你怎么走却又漫长。 问题答案: 这是一种常用的方法: 还有一种方法:区别在于返回原语而返回对象。

  • 我一直得到这个错误:(错误出现在Donasi.class 这是课堂上的Donasi: 这是类DonationAdapter: 这是我的日志: 如何解决这个问题?

  • 问题内容: 在这里很难说出要问什么。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 我从服务器收到以下响应: 我需要将其转换为。有什么帮助吗? 顺便说一句,我尝试了一下,但它不起作用: 我得到错误: 问题答案: 如果您正在谈论在Java库中使用JSON,那么由于您的输入字符串是JSON对象,而不是

  • 这是我的错误行, 最终int plChildren=整数。parseInt(绘图仪子项); 那么为什么会出现这样的错误呢?

  • 问题内容: 我有这样的并发例程, 现在,我想从例程中发送1个字符串,例如,字符串+整数+字符串+系统时间(以纳秒为单位)。有人可以帮助我如何实现这一目标。 问题答案: 抱歉,我提早了。可能是这样的: 谢谢。 更新(Go1):已被替换。