In which case could quot;a != aquot; return quot;truequot;?(在这种情况下,可以“a != a;返回“真?)
问题描述
java.lang.Math#min(double, double):
public static double min(double a, double b) {
if (a != a) return a; // a is NaN
if (a == 0.0d && b == 0.0d && Double.doubleToLongBits(b) == negativeZeroDoubleBits) return b;
return (a <= b) ? a : b;
}
在什么情况下 a != a
会返回 true
?似乎是当 a
为 NaN 时,但我无法想象一个例子.可以提供一份吗?
In which case could a != a
return true
? It seems that it's when a
is NaN, but I can't imagine an example. Could you please provide one?
推荐答案
一个简单的例子是
double d = Double.NaN; // or
double d = 0.0/0.0; // or
double d = Double.POSITIVE_INFINITY + Double.NEGATIVE_INFINITY;
if (Double.isNaN(a)) { // tests if a != a
// do something
BTW Double.compare() 确实认为 NaN 相等
BTW Double.compare() does see NaN as equal
if (Double.compare(d, d) == 0) // always.
对于任何类型和值,多线程都是可能的.例如
With multiple threads this is possible for any type and value. e.g.
if (a != /* another thread changes 'a' */ a) {
// a thread changed a while you were looking at it.
这篇关于在这种情况下,可以“a != a";返回“真"?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在这种情况下,可以“a != a";返回“真"?


基础教程推荐
- Java:带有char数组的println给出乱码 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- 降序排序:Java Map 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01