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

其他的NaN值是多少?

聂建茗
2023-03-14
问题内容

的文档java.lang.Double.NaN说是

拥有类型为Not-a-
Number(NaN)的常数double。它等于所返回的值Double.longBitsToDouble(0x7ff8000000000000L)

这似乎意味着还有其他人。如果是这样,我如何掌握它们,并且可以方便地完成吗?

明确地说,我想找到这样的doublex

Double.doubleToRawLongBits(x) != Double.doubleToRawLongBits(Double.NaN)

Double.isNaN(x)

都是真的。


问题答案:

您需要doubleToRawLongBits而不是doubleToLongBits

doubleToRawLongBits提取实际的二进制表示形式。 doubleToLongBits
不会,它首先将all转换NaN为默认值NaN

double n = Double.longBitsToDouble(0x7ff8000000000000L); // default NaN
double n2 = Double.longBitsToDouble(0x7ff8000000000100L); // also a NaN, but M != 0

System.out.printf("%X\n", Double.doubleToLongBits(n));
System.out.printf("%X\n", Double.doubleToRawLongBits(n));
System.out.printf("%X\n", Double.doubleToLongBits(n2));
System.out.printf("%X\n", Double.doubleToRawLongBits(n2));

输出:

7FF8000000000000
7FF8000000000000
7FF8000000000000
7FF8000000000100


 类似资料:
  • 问题内容: 我有一个熊猫数据框,其中包含每月数据,我想为其计算12个月的移动平均值。但是缺少一月每个月的数据(NaN),所以我正在使用 但这只是给我所有的NaN值。 有没有一种简单的方法可以忽略NaN值?我了解实际上,这将成为11个月的移动平均值。 数据框还有其他包含一月数据的变量,所以我不想只扔掉一月的列并进行11个月的移动平均。 问题答案: 有几种方法可以解决此问题,最好的方法取决于一月份的数

  • 例如,我想把'NAN'换成'dog'和'cat'。像从1-30'楠'应该换成'dog',从40-100'应该换成'cat'。我应该怎么做

  • 问题内容: 我期望得到,但我得到: 问题答案: 并非所有的Nan都是相同的: 因此, 包含,它们是相同的,所以 但包含不相同的: 因此set不会将它们视为相等: 如果您有熊猫系列,请使用它的方法而不是查找唯一值:

  • 函数“howMany”只是统计了某个特殊的数值的出现次数,有时候我们需要统计每个数值出现的次数。可以用下面这个循环函数完成这项工作。 int numValues = 20; int upperBound = 10; apvector<int> vector = randomVector (numValues, upperBound); cout << "value\thowMany"; for

  • 多线程其他模式 Promise Pipeline Master-Slave Serial Thread Confinement Promise 所谓Promise, 就是一个对象, 用来传递异步操作的消息. 它代表了某个未来才会知道结果的事件(通常是一个异步操作), 并且这个事件提供统一的API, 可供进一步处理. 对象的状态不受外界影响. Promise对象代表一个异步操作, 有三种状态: Pe

  • 我有一个看起来像这样的数据帧(Dataframe X): 我有另一个数据框,如下所示(数据帧 Y): 我想做的是:对于Dataframe X“数字”列中的每个值,搜索它是否等于或介于Dataframe Y的“数字1”和“数字2”对值的任何值之间。此外,对于这个“数字1”和“数字2”对值,其各自的“id”必须与Dataframe X中的“id”匹配。如果这都是真的,那么我想在Dataframe X中