偶尔我的代码会计算一个double并返回Infinite。代码不会卡住,我甚至可以在代码保存的.csv文件中看到这些结果(单词" Infinite"写在.csv文件中)。
但是我想避免我的代码进一步使用这个无限的结果,所以我必须检测结果是否是无限的。我怎么能这样做?
我试过像
这样的东西if(a==Infinite){ }
或
if(a.isInfinite()){ }
但这些似乎都不是正确的代码。
答案 0 :(得分:9)
阅读Javadoc:
public static boolean isInfinite(double v)
如果指定的数字的大小无限大,则返回true,否则返回false。
所以,比如:
if (Double.isInfinite(myValue)) { ... }
答案 1 :(得分:2)
如果您有原始double
,请使用
a == Double.POSITIVE_INFINITY || a == Double.NEGATIVE_INFINITY
作为无限的测试。请注意,如果您的无穷大是浮点除以零的结果,那么您还应该检查
Double.NAN
这将是0.0 / 0.0
的结果。不幸的是,所有内容都会将false
与NaN
(包括NaN
本身)进行比较,因此您需要使用Double.isNaN(a)
。
然后将整个事物分开并使用Double.isFinite(a)
,其中false
代表+无穷大,无穷大和NaN,true
代替所有其他情况。