如何检查计算结果是否为 Infinite?

How to check if a calculation result is Infinite or not?

我的代码有时会计算双精度和 returns 无限。代码不会卡住,我什至可以在代码保存的 .csv 文件中看到这些结果(单词 "Infinite" 写在 .csv 文件中)。

但是我想避免我的代码进一步使用这个无限结果,所以我必须检测结果是否是无限的。我该怎么做?

我试过

if(a==Infinite){    }

if(a.isInfinite()){    }

但其中 none 似乎是正确的代码。

如果你有一个原始的double然后使用

a == Double.POSITIVE_INFINITY || a == Double.NEGATIVE_INFINITY

作为无穷大的测试。请注意,如果您的无穷大是浮点除以零的结果,那么您还应该检查

Double.NAN

这将是 0.0 / 0.0 的结果。不幸的是,一切都将 falseNaN 进行比较(包括 NaN 本身),因此您需要为此使用 Double.isNaN(a)


然后将整个东西合并并使用 Double.isFinite(a),对于 +Infinity、-Infinity 和 NaN 将是 false,在所有其他情况下将是 true

阅读 Javadoc:

public static boolean isInfinite(double v)

Returns true if the specified number is infinitely large in magnitude, false otherwise.

所以,类似于:

if (Double.isInfinite(myValue)) { ... }