传递给Double.parseDouble

时间:2011-07-12 16:14:16

标签: java numberformatexception

当我将100L之类的数字传递给Double.parseDouble()时 我得到一个NumberFormatException。 但100L是有效数字。

编辑:如果传递100d或100f,我不会收到任何错误。我只买100L

3 个答案:

答案 0 :(得分:3)

100L是一个代表长值100的文字。字符串“100L”不是,因此当你将它传递给parseDouble()时,它会正确地抱怨。放下“L”就可以了。

更新:并不是parseDouble()不喜欢文字语法,而是它不喜欢您已明确声明该数字为{{1} (实际上它正在寻找浮点类型。)

答案 1 :(得分:1)

来自JavaDocs,Double.parseDouble();

  

返回一个新的double,初始化为由。表示的值   指定的String,由Double类的valueOf方法执行。

语法,

public static double parseDouble(String s) throws NumberFormatException

Throws:
NumberFormatException - if the string does not contain a parsable double.

它希望将一个字符串作为参数传递。 “100L”是一个长值而不是字符串的文字。为避免任何错误,请尝试使用“100”而不是“100L”。

  

如果传递100d或100f,我不会收到任何错误。我只买100L?

parseDouble()调用valueOf(),专门查找 浮点表示。因为,d和f表示双精度和浮点数,一切正常。 但是,您不应该明确指定数字。 (如100L)


FYI,

NumberFormatException:http://www.ideone.com/DMpUN
通常运行:http://www.ideone.com/QdxXY


答案 2 :(得分:0)

“字符串”中的100l不是有效数字。您只需要传入一个有效的双字符串。

class test{
    public static void main(String... args){
            System.out.println(Double.parseDouble("100.0000"));
    }}

这很好用。正如另一个用户所说,在字符串中传递“100l”将不起作用,因为l意味着长值作为文字数。