【问题标题】:why Float.NaN == Float.NaN is false [duplicate]为什么 Float.NaN == Float.NaN 为假 [重复]
【发布时间】:2013-03-30 11:44:10
【问题描述】:

为什么 Float.NaN == Float.NaNfalse ?我已经在不止一个 JVM 上对其进行了测试。

感谢任何帮助。

  System.out.println(Float.NaN == Float.NaN); // gives false

【问题讨论】:

  • 但是谷歌搜索得还不够……
  • 找原因here
  • 我在想NaN 被指定为不等于任何其他数字。 (或者,事实上,无与伦比,但== 无法表达。)

标签: java


【解决方案1】:

这不是 Java 特有的。

IEEE754 的NaN 根据合同等于没有数字,甚至它们自己。

【讨论】:

  • 这不是检测 NaN 的最简单方法 - 如果数字不是本身?
  • @TobiasLangner 正如维基百科所说:“等式和不等式谓词是非信号性的,因此 x = x 返回 false 可用于测试 x 是否为安静的 NaN” .但在您的代码中,最清晰的方法是使用Float.isNaN
猜你喜欢
  • 2011-07-09
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 2014-07-24
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多