正如Java语言规范中所写的那样,如果其中一个或两个操作数为NaN,则数值比较运算符<、<=、>和>=返回FALSE. 所以我在比较两个男的. 为什么当我比较两个NaN时,它在控制台上打印为真?

double f = 3/0.0d;
double h = 2/0.0d;
        
System.out.println((f>=h));

F和h都是NaN,当我比较它们时,我希望输出FALSE,但我得到了TRUE作为我的输出.

推荐答案

2.0/0不会生成非数:

System.out.println(2.0/0.0);
> Infinity

DOUBLE有3个‘非数字’值:

  • 正无穷大
  • 负无穷大
  • 非数

根据规范,正无穷大等于正无穷大,负无限大等于负无穷大.只有南不能自给自足.

我们可以找到南:

double nan = 0.0 / 0.0;
System.out.println(nan);
System.out.println(nan == nan);
> 非数
> false

如果你在某个地方确实需要非数(例如,你想退货),最容易理解的方法是Double.非数.上面的例子简单地展示了如何自然地从计算中获得非数值--当零除以零时是最常见的方法.其他几种方式:

double posInf = Double.POSITIVE_INFINITY;
double negInf = Double.NEGATIVE_INFINITY;
System.out.println(posInf - posInf); // 非数
System.out.println(posInf - negInf); // positive infinity
System.out.println(posInf / posInf); // 非数

Java相关问答推荐

Java字符串常数池困惑

路径映射未发生

如何修复IndexOutOfBoundsException在ClerView适配器的onRowMoved函数?

如何使用值中包含与号的查询参数创建一个java.net.URI

S,要对Java复制构造函数深度克隆所有属性进行单元测试,最可靠的方法是什么?

没有使用Lombok生成的参数

使用While循环打印素数,无法正常工作

Oj算法 MatrixR032从字符串、归一化和余弦相似度计算创建

删除打印语句会影响功能...腐败在起作用?

如果第一位数字和最后一位数字相差超过一位,您将如何获得随机数?

找出承载Cargo 的最小成本

try 使用预准备语句占位符获取信息时出现Try-With-Resources错误

当我在Java中有一个Synchronized块来递增int时,必须声明一个变量Volatile吗?

如何从命令行编译包中的所有类?

Java嵌套流查找任意值

在单例类上获取Java锁,了解原因

为什么我的登录终结点不能被任何请求访问?

Java System.getProperty在哪里检索user.home?

控制器建议异常处理

如何使用带有可选参数的类生成器?