Double.parseDouble("100d")如何没有错误

pra*_*y G 2 java

Double.parseDouble("100a"); //按预期获得错误但是为什么下面的行没有得到错误

Double.parseDouble("100d");

请解释一下.

Kon*_*kov 6

根据源代码,该Double.parseDouble(String s)方法使用FloatingDecimal.readJavaFormatString(String s)解析提供的参数.

在那里,你可以看到,有一个检查,如果所提供的String有端'D','d','F'或者'f',如果没有,那么NumberFormatException被抛出:

if (i < l &&
   ((i != l - 1) ||
    (in.charAt(i) != 'f' &&
     in.charAt(i) != 'F' &&
     in.charAt(i) != 'd' &&
     in.charAt(i) != 'D'))) {
       break parseNumber; // go throw exception
     }
Run Code Online (Sandbox Code Playgroud)