如何检查计算结果是否无限?

时间:2017-02-22 09:23:41

标签: java infinite

偶尔我的代码会计算一个double并返回Infinite。代码不会卡住,我甚至可以在代码保存的.csv文件中看到这些结果(单词" Infinite"写在.csv文件中)。

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

我试过像

这样的东西
if(a==Infinite){    }

if(a.isInfinite()){    }

但这些似乎都不是正确的代码。

2 个答案:

答案 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的结果。不幸的是,所有内容都会将falseNaN(包括NaN本身)进行比较,因此您需要使用Double.isNaN(a)

然后将整个事物分开并使用Double.isFinite(a),其中false代表+无穷大,无穷大和NaN,true代替所有其他情况。