Double.parseDouble(" 100d")如何得不到错误

时间:2015-10-06 10:41:17

标签: java

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

Double.parseDouble("100d");

请解释一下。

3 个答案:

答案 0 :(得分:6)

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

在那里,您可以看到,检查所提供的2[System.Reflection.TypeInfo,System.Type].MoveNext () [0x00000] in <filename unknown>:0 at System.Linq.Enumerable+<CreateSelectManyIterator>c__Iterator12是否以1 types, System.Composition.Convention.AttributedModelProvider attributeContext) [0x00000] in <filename unknown>:0 at System.Composition.Hosting.ContainerConfiguration.CreateContainer () [0x00000] in <filename unknown>:0 at Microsoft.CodeAnalysis.Host.Mef.MefHostServices.Create (IEnumerable#import "CUSBoxes.h" const int defaultCount = 10; const long int repeat = 25000; const NSString *defaultDescription = @"If any layout issue is related, change default values of each box you want to display"; @implementation CUSBoxes @end String'D'结尾,如果它没有' t,然后抛出'd'

'F'

答案 1 :(得分:1)

d代表double

public static double parseDouble(String s) throws NumberFormatException

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

100d是一个可解析的double字符串,这就是它没有显示任何错误的原因。

答案 2 :(得分:0)

javadoc说:

  

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

所以我们看一下the javadoc for Double::valueOf,它提供了详细的可接受语法,特别是:

  

签署 opt FloatingPointLiteral

其中FloatingPointLiteral在JLS中定义。我们转到JLS #3.10.2,您发现它可能会按预期以fFdD结尾。

如果您只想接受人类可读的双打&#34;,您可以使用a DecimalFormat