Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Double.NaN是一个对象_Java - Fatal编程技术网

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
一个finally
double.NaN=Double.NaN
为假。

但这是正常的。您的parseDouble方法尝试解析“vijay”并返回_def,因为“vijay”不是一个双精度值。而
db.parseDouble(“vijay”,double.NaN)
将返回
double.NaN
一个finally
double.NaN=Double.NaN
为假。

写入
条件?真:假
如果你仔细想想的话,它显然是愚蠢的。只要说
condition
…就像在实例上调用静态方法一样(使用
Double1.parseDouble(…)
,不要创建它的实例)。并将
parseDouble
final
return
放在
catch
块中,该块应该更具体地说明catch(NPE)中的哪些异常。写入
条件?真:假
如果你仔细想想的话,它显然是愚蠢的。只要说
condition
…就像在实例上调用静态方法一样(使用
Double1.parseDouble(…)
,不要创建它的实例)。然后将
parseDouble
final
return
放在
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。