小编jck*_*jck的帖子

与NaN不同,为什么浮点无穷大相等?

为什么无穷大比较遵循应用于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)

这似乎很危险.假设溢出产生无限值,我想更有可能的是,最终作为无穷大的两个变量在完美算术中实际上并不相等.

java floating-point comparison nan infinity

54
推荐指数
3
解决办法
4608
查看次数

标签 统计

comparison ×1

floating-point ×1

infinity ×1

java ×1

nan ×1