为什么无穷大比较遵循应用于NaN的逻辑?此代码打印出false
三次:
double a = Double.NaN;
double b = Double.NaN;
System.out.println(a == b); // false
System.out.println(a < b); // false
System.out.println(a > b); // false
Run Code Online (Sandbox Code Playgroud)
但是,如果我Double.NaN
改为Double.POSITIVE_INFINITY
,我会获得true
平等,但是false
对于大于和小于比较:
double a = Double.POSITIVE_INFINITY;
double b = Double.POSITIVE_INFINITY;
System.out.println(a == b); // true
System.out.println(a < b); // false
System.out.println(a > b); // false
Run Code Online (Sandbox Code Playgroud)
这似乎很危险.假设溢出产生无限值,我想更有可能的是,最终作为无穷大的两个变量在完美算术中实际上并不相等.