java中关于a!=a的例子~.~!

来源:互联网 发布:小学生自学英语软件 编辑:程序博客网 时间:2024/04/29 20:08

     今天群里面有人问了个问题:举个例子说明a!=a的情况,想了半天没想出来。原来答案是这样的:

 

            double a=0.0/0.0;

 

    此时System.out.println(a!=a);即是正确的;

 

    为什么是正确的,为什么没有报错呢(如果是int a=0/0运行时肯定报错了:Exception in thread "main" java.lang.ArithmeticException: / by zero),而double和float却显示的是正确。下面做下解释:

 

    0.0/0.0这个值,在IEEE 754浮点算术规则里保留了一个特殊的值用来表示一个不是数字的数量。这个值就是NaN("Not a Number"的缩写),对于所有没有良好定义的浮点计算都将得到这个值,比如:0.0/0.0;其实我们还可以直接使用Double.NaN来得到这个值。在IEEE 754规范里面规定NaN不等于任何值,包括它自己。