現在,然後我的代碼計算一個double並返回無限。代碼不會卡住,我甚至可以在代碼保存的.csv文件中看到這些結果(單詞「Infinite」被寫入.csv文件中)。如何檢查計算結果是否爲無限?
但我想避免我的代碼進一步使用這個無限的結果,所以我必須檢測其結果是無限的或不是。我怎樣才能做到這一點 ?
我想是這樣
if(a==Infinite){ }
或
if(a.isInfinite()){ }
但這些都不似乎是正確的代碼。
現在,然後我的代碼計算一個double並返回無限。代碼不會卡住,我甚至可以在代碼保存的.csv文件中看到這些結果(單詞「Infinite」被寫入.csv文件中)。如何檢查計算結果是否爲無限?
但我想避免我的代碼進一步使用這個無限的結果,所以我必須檢測其結果是無限的或不是。我怎樣才能做到這一點 ?
我想是這樣
if(a==Infinite){ }
或
if(a.isInfinite()){ }
但這些都不似乎是正確的代碼。
閱讀Javadoc:如果指定的數是無限大,否則爲false
public static boolean isInfinite(double v)
返回true。
所以,像這樣:
if (Double.isInfinite(myValue)) { ... }
OP詢問數字是否是無限的,而不是數字是否是有限的。我已經評論過你的答案。 –
如果你有一個原始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
。
我不確定您是否需要處理'NaN'。 OP沒有說過它是;不管是因爲他們沒有考慮過這個案例,或者實際上不想處理這個案件,目前還不清楚。 –
我只是想要有所幫助;-) – Bathsheba
我想你是;我只是說你可能在這裏添加自己的需求。另外,通過'Double.isInfinite'使用顯式比較沒有意義。 –
@Tunaki你指的問題是不是無限大,而是一個與逗號後的數字的無限數量的兩倍(像4/3 = 1.333333)。我發現這個問題,但它並沒有解決我的問題。 – Veronique
不,它不是說它是一個雙重值是無限的,答案是使用'Double.isInfinite(double)',就像這裏接受的那樣。沒有提及在那裏有無限小數表示的double值。 – Tunaki
好的,對不起,現在是。要麼我變瘋了,要麼你改變了鏈接。 – Veronique