Double.parseDouble("100a");
//按预期获得错误
但为什么下面的行没有得到错误
Double.parseDouble("100d");
请解释一下。
答案 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,您发现它可能会按预期以f
,F
,d
或D
结尾。
如果您只想接受人类可读的双打&#34;,您可以使用a DecimalFormat
。