当前位置: 首页 > 面试题库 >

在哪种情况下,“ a!= a”可以返回“ true”?

公孙弘深
2023-03-14
问题内容

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退货trueaNaN 似乎是在什么时候,但我无法想象一个例子。你能提供一个吗?


问题答案:

一个简单的例子是

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视为相等

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

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

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


 类似资料:
  • 在哪种情况下可以返回?好像是是NaN的时候,但是我想像不出一个例子。你能提供一个吗?

  • 然而,今天我在处理一些代码时,意外地发现以下两个交换给出了不同的结果: 这让我难以置信。有人能给我解释一下这里发生了什么吗?

  • 问题内容: 我有PK,它是自增密钥。我需要将记录插入数据库中,然后取回该PK并在另一个插入中使用它。 但是,我想在一次交易中做到这一点。那可能吗。这样的想法是,如果我必须执行的任何更新/插入都失败了,那么我可以回滚所有内容,但是我的印象是我需要进行一次提交。 我本来打算先在ado.net上执行此操作,然后切换到存储过程,因为我认为这可能会解决此问题。 SP在这种情况下会帮助我吗? 问题答案: 是的

  • 本文向大家介绍分析`('b' + 'a' + +'a' + 'a').toLowerCase()`返回的结果相关面试题,主要包含被问及分析`('b' + 'a' + +'a' + 'a').toLowerCase()`返回的结果时的应答技巧和注意事项,需要的朋友参考一下 那个多出来的 + 是一元操作符,操作数是后面那个 'a',它被转成了 number 。 因此加出来是 'baNaNa',toLo

  • 在哪种情况下会发生这种情况?

  • A/B 测试可以用在哪里 尽管A/B 测试可以弥补产品优化中遇到的不足,但它并不完全适用于所有的产品。因为A/B 测试的结果需要大量数据支撑,日流量越大的网站得出结果越准确。通常来说,我们建议在进行A/B测试时,能够保证 每个版本的日流量在1000个UV以上 ,否则试验周期将会很长,或很难获得准确(结果收敛)的数据结果推论。 说完什么样的产品适合用A/B 测试,接下来我们将从优化内容和应用场景两个