gpt4 book ai didi

java - 在哪种情况下 "a != a"可以返回 "true"?

转载 作者:搜寻专家 更新时间:2023-11-01 01:26:55 25 4
gpt4 key购买 nike

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 的时候,但是我想不出一个例子。你能提供一个吗?

最佳答案

一个简单的例子是

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

顺便说一句,Double.compare() 确实将 NaN 视为相等

if (Double.compare(d, d) == 0) // always.

对于多线程,这对于任何类型和值都是可能的。例如

if (a != /* another thread changes 'a' */ a) {
// a thread changed a while you were looking at it.

关于java - 在哪种情况下 "a != a"可以返回 "true"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18460416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com