Java Double.NaN是一个对象
它应该返回Java Double.NaN是一个对象,java,Java,它应该返回true,其中如上代码返回false。为什么?楠把虚假比作一切——包括他们自己 你可以跟我查一下NaN public class Double1 { public static double parseDouble(String _s, double _def) { try { return Double.parseDouble(_s); } catch(Exception e) {
true
,其中如上代码返回false
。为什么?楠把虚假比作一切——包括他们自己
你可以跟我查一下NaN
public class Double1 {
public static double parseDouble(String _s, double _def) {
try {
return Double.parseDouble(_s);
}
catch(Exception e) {
}
return _def;
}
public static void main(String[] args) {
Double1 db=new Double1();
boolean ab=db.parseDouble("vijay", Double.NaN)!=Double.NaN?true:false;
System.out.println("ab value: "+ ab);
System.out.println(Double.NaN==Double.NaN);
}
}
它实际上除了使用这个行为之外什么也不做:如果
x!=x
NaN将虚假与一切——包括他们自己——相比较
你可以跟我查一下NaN
public class Double1 {
public static double parseDouble(String _s, double _def) {
try {
return Double.parseDouble(_s);
}
catch(Exception e) {
}
return _def;
}
public static void main(String[] args) {
Double1 db=new Double1();
boolean ab=db.parseDouble("vijay", Double.NaN)!=Double.NaN?true:false;
System.out.println("ab value: "+ ab);
System.out.println(Double.NaN==Double.NaN);
}
}
它实际上除了使用这个行为之外什么也不做:如果
x!=x
但这是正常的。您的parseDouble方法尝试解析“vijay”并返回_def,因为“vijay”不是一个双精度值。而db.parseDouble(“vijay”,double.NaN)
将返回double.NaN
一个finallydouble.NaN=Double.NaN
为假。但这是正常的。您的parseDouble方法尝试解析“vijay”并返回_def,因为“vijay”不是一个双精度值。而db.parseDouble(“vijay”,double.NaN)
将返回double.NaN
一个finallydouble.NaN=Double.NaN
为假。写入条件?真:假
如果你仔细想想的话,它显然是愚蠢的。只要说condition
…就像在实例上调用静态方法一样(使用Double1.parseDouble(…)
,不要创建它的实例)。并将parseDouble
finalreturn
放在catch
块中,该块应该更具体地说明catch(NPE)中的哪些异常。写入条件?真:假
如果你仔细想想的话,它显然是愚蠢的。只要说condition
…就像在实例上调用静态方法一样(使用Double1.parseDouble(…)
,不要创建它的实例)。然后将parseDouble
finalreturn
放在catch
块中,该块应该更具体地说明catch中的哪些异常(NPE??)(因为ANSI/IEEE 754-1985。)@KerrekSB这就像说infinity==infinity,即1/0==2/0,这很愚蠢。@JacoVanNiekerk:一点也不愚蠢。无穷大与它自己相比是相等的。它实际上是一条适当延伸实线上的一个定义良好的点。@KerrekSB,对不起,我同意@JacoVanNiekerk。简单的数学解释:如果infinity==infinity
那么infinity-infinity==0
那么infinity-infinity+1==0+1
那么infinity-infinity==1
。因此,将无限与无限进行比较是愚蠢的。(因为ANSI/IEEE 754-1985)。@KerrekSB这就像说无限==无限,即1/0==2/0,这很愚蠢。@JacoVanNiekerk:一点也不愚蠢。无穷大与它自己相比是相等的。它实际上是一条适当延伸实线上的一个定义良好的点。@KerrekSB,对不起,我同意@JacoVanNiekerk。简单的数学解释:如果infinity==infinity
那么infinity-infinity==0
那么infinity-infinity+1==0+1
那么infinity-infinity==1
。因此,将无穷大与无穷大进行比较是愚蠢的。对不起,混淆了,第一个print语句返回true,第二个语句返回false。对不起,混淆了,第一个print语句返回true,第二个语句返回false。