用于排序的Java双NaN比较

用于排序的Java双NaN比较,java,double,nan,comparator,Java,Double,Nan,Comparator,我正在为一个类实现Comparator,当覆盖compare时,我有一个问题 double data1 = GetValueOf(Data1); double data2 = GetValueOf(Data2); int compareResult = Double.compare(data1, data2); 如果data1和/或data2为NaN,会发生什么情况 这仍然是要执行的有效比较吗 更新 我不明白为什么这个问题被低估了。我只是想解释一下,我面临着一个“问题” 我在做这个 if(Do

我正在为一个类实现Comparator,当覆盖compare时,我有一个问题

double data1 = GetValueOf(Data1);
double data2 = GetValueOf(Data2);
int compareResult = Double.compare(data1, data2);
如果data1和/或data2为NaN,会发生什么情况

这仍然是要执行的有效比较吗

更新 我不明白为什么这个问题被低估了。我只是想解释一下,我面临着一个“问题”

我在做这个

if(Double.isNaN(data1)) data1 = Double.Positive_Infinity;
if(Double.isNaN(data2)) data2 = Double.Positive_Infinity;
在Double.compare之前,但仍然会出现此错误


所以,我需要了解是否有一些基本的东西我不了解。

如果将NAN与自身进行比较,则返回一个无序的结果。 Java说:

溢出的操作产生有符号的无穷大,这是一个操作 下溢产生一个非规范化值或有符号零,以及 没有数学上确定结果的运算产生NaN。全部的 以NaN作为操作数的数值操作将产生NaN作为结果。作为 已经描述过,NaN是无序的,因此进行数值比较 涉及一个或两个NAN的操作返回false和any= 涉及NaN的比较返回true,包括x=当x为NaN时为


您是否阅读了Java语言规范以找到答案?如果您正在覆盖
Comparator
中的
compare()
,则只有您负责验证和比较数据。如果在比较过程中发现的任何无效数据引发了
异常
@JimGarrison,则技术不承担任何责任,我确实查看了java文档,但我想了解一下关于使用Double.compare的意见。您是否阅读了java文档,它引用了哪些内容?NaN处理是否适合您,只有您可以根据数据结构的要求来确定。