繁体   English   中英

将 long 传递给 Double.parseDouble

[英]Passing long to Double.parseDouble

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

编辑:如果通过 100d 或 100f,我没有收到任何错误。 我只买了100L

100L 是一个表示长值 100 的文字。字符串“100L”不是,所以当你将它传递给 parseDouble() 时,它理所当然地抱怨。 去掉“L”,你应该没问题。

更新:不是parseDouble()不喜欢文字语法,而是它不喜欢你明确声明数字为long (实际上它正在寻找浮点类型。)

来自 JavaDocs, Double.parseDouble();

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

句法,

public static double parseDouble(String s) throws NumberFormatException

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

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

如果通过 100d 或 100f,我没有收到任何错误。 我只买100L?

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


供参考,

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


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

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

这工作正常。 正如另一位用户指出的那样,在字符串中传递“100l”是行不通的,因为 l 意味着将 long 值作为文字数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM