Java 如何检查计算结果是否为无穷大?

Java 如何检查计算结果是否为无穷大?,java,infinite,Java,Infinite,我的代码不时计算一个double并返回无穷大。代码不会被卡住,我甚至可以在代码保存的.csv文件中看到这些结果(在.csv文件中写入了“无限”一词) 但是我想避免我的代码进一步使用这个无限结果,所以我必须检测结果是否是无限的。我该怎么做 我试过类似的东西 if(a==Infinite){ } 或 但是这些似乎都不是正确的代码。如果您有一个原语double,那么使用 a==Double.POSITIVE | | a==Double.NEGATIVE | 作为对无穷大的检验。请注意,如果无穷

我的代码不时计算一个double并返回无穷大。代码不会被卡住,我甚至可以在代码保存的.csv文件中看到这些结果(在.csv文件中写入了“无限”一词)

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

我试过类似的东西

if(a==Infinite){    }


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

如果您有一个原语
double
,那么使用

a==Double.POSITIVE | | a==Double.NEGATIVE |

作为对无穷大的检验。请注意,如果无穷大是浮点除零的结果,则还应检查

Double.NAN

这将是
0.0/0.0
的结果。不幸的是,所有东西都将
false
NaN
(包括
NaN
本身)进行比较,因此需要使用
Double.isNaN(a)


然后将整件事放入垃圾箱并使用,对于+Infinity、-Infinity和NaN,将使用
false
,在所有其他情况下,将使用
true

阅读:

如果指定的数字的大小无限大,则返回true,否则返回false

比如说:

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

OP是问这个数字是否是无限的,而不是这个数字是否是有限的。我已经对你的回答发表了评论。我不确定你是否有必要在这里处理
NaN
。OP没有说它是;这是因为他们没有考虑这个案子,还是实际上不想处理这个案子还不清楚。我只是想帮点忙;-)我认为你是;我只是说你可能在这里添加了你自己的需求。另外,对Double.isInfinite进行显式比较是没有意义的。我把它放进去只是为了让那些认为你不能用浮点运算的吃蛋饼的人思考一下。但我同意你的观点,使用函数是优越的。特别是在C++中浮点类型的规范是非常宽松的。你是否将IDE中的源版本设置为版本8?@ TunaKi。你所指的问题不是关于无穷大,而是关于逗号后面的无限数量的双(4/3=1×333333)。我发现了那个问题,但它没有解决我的问题。不,不是,它说的是一个双倍值是无限的,答案是使用
double.isInfinite(double)
,就像这里接受的那样。这里没有提到具有无限十进制表示的双精度值。好的,对不起,现在是。要么我疯了,要么你改变了链接。我没有改变链接,没有(你改变了)。错误点击发生:)!
public static boolean isInfinite(double v)
if (Double.isInfinite(myValue)) { ... }