2017-02-22 45 views
1

現在,然後我的代碼計算一個double並返回無限。代碼不會卡住,我甚至可以在代碼保存的.csv文件中看到這些結果(單詞「Infinite」被寫入.csv文件中)。如何檢查計算結果是否爲無限?

但我想避免我的代碼進一步使用這個無限的結果,所以我必須檢測其結果是無限的或不是。我怎樣才能做到這一點 ?

我想是這樣

if(a==Infinite){ } 

if(a.isInfinite()){ } 

但這些都不似乎是正確的代碼。

+0

@Tunaki你指的問題是不是無限大,而是一個與逗號後的數字的無限數量的兩倍(像4/3 = 1.333333)。我發現這個問題,但它並沒有解決我的問題。 – Veronique

+0

不,它不是說它是一個雙重值是無限的,答案是使用'Double.isInfinite(double)',就像這裏接受的那樣。沒有提及在那裏有無限小數表示的double值。 – Tunaki

+0

好的,對不起,現在是。要麼我變瘋了,要麼你改變了鏈接。 – Veronique

回答

9

閱讀Javadoc:如果指定的數是無限大,否則爲false

public static boolean isInfinite(double v) 

返回true。

所以,像這樣:

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

OP詢問數字是否是無限的,而不是數字是否是有限的。我已經評論過你的答案。 –

1

如果你有一個原始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

+0

我不確定您是否需要處理'NaN'。 OP沒有說過它是;不管是因爲他們沒有考慮過這個案例,或者實際上不想處理這個案件,目前還不清楚。 –

+0

我只是想要有所幫助;-) – Bathsheba

+0

我想你是;我只是說你可能在這裏添加自己的需求。另外,通過'Double.isInfinite'使用顯式比較沒有意義。 –