如何检查计算结果是否为 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
的结果。不幸的是,一切都将 false
与 NaN
进行比较(包括 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)) { ... }
我的代码有时会计算双精度和 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
的结果。不幸的是,一切都将 false
与 NaN
进行比较(包括 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)) { ... }