【问题标题】:JAVA - Converstion String (With dot) to LongJAVA - 将字符串(带点)转换为长
【发布时间】:2019-03-22 19:37:31
【问题描述】:

我有关于从字符串转换为长值的问题。示例:

String a = "4.0";
Long l= Long.parseLong(a);

当我执行时,得到异常:

Exception in thread "main" java.lang.NumberFormatException: For input string: "4.0"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:589)
at java.lang.Long.parseLong(Long.java:631)
at com.tests.Test2.main(Test2.java:69)

有什么想法吗? 谢谢!

【问题讨论】:

    标签: java type-conversion


    【解决方案1】:

    4.0 不是长值,是双精度,试试Double.parseDouble(a)

    【讨论】:

      【解决方案2】:

      您正试图将带有不受支持的字符. 的字符串转换为Longhttps://docs.oracle.com/javase/7/docs/api/java/lang/Long.html#parseLong(java.lang.String) 不支持此功能。试试Long l = Double.valueOf(a).longValue();https://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#valueOf(java.lang.String)

      【讨论】:

        【解决方案3】:

        你也可以使用 Double.valueOf(a)

        Double.parseDouble(String) 将返回一个原始的 double 类型。 Double.valueOf(String) 将返回一个 Double 类型的包装对象。

        根据您的需要,您可以使用上述其中一种

        【讨论】:

          【解决方案4】:

          你的代码字符串 a = "4.0"; Str a ist Long,It's Double, 如果你想转换成 Long,你需要先转换 Double.type。 你应该 : 双 d = Double.valueOf(a); 然后 Long re = d.longValue() 或使用 Ur 方法 Long re = d.toLong re 是最终结果。

          【讨论】:

          • 听起来大部分都是正确的,除了“使用 Ur 方法 Long re = d.toLong”。 d.toLong 是什么?我在Double JDK Javadocs 中找不到Double#toLong
          【解决方案5】:

          为我工作:

          !a.contains(".") ? Long.parseLong(a) : (long) Double.parseDouble(a)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-11-25
            • 2014-06-15
            • 2010-12-25
            • 1970-01-01
            • 2016-03-03
            • 2012-09-19
            • 2010-12-23
            相关资源
            最近更新 更多