2017-02-22 11 views
1

さて、私のコードはdoubleを計算し、無限を返します。コードが詰まることはなく、コードによって保存された.csvファイル(これらの結果は.csvファイルに "Infinite"と書かれています)でこれらの結果を見ることもできます。計算結果が無限大かどうかを確認する方法は?

しかし、この無限の結果をさらに使うためにコードを避けたいので、結果が無限であるかどうかを検出する必要があります。これどうやってするの ?

私は

if(a==Infinite){ } 

または

if(a.isInfinite()){ } 

のようなものを試してみましたが、これらはいずれも適切なコードであると思いません。あなたは原始的doubleを持っている場合は

+0

@Tunakiは、あなたが参照している質問は無限ではないが、およそコンマの後の桁数が無限とダブル(4/3のようなもの= 1.333333)。私はその質問を見つけましたが、それは私の問題を解決しませんでした。 – Veronique

+0

いいえ、それは二重値が無限であることを意味しています。答えはここで受け入れられるように、Double.isInfinite(double)を使用することです。そこには無限小数表現を持つ二重の値に言及していません。 – Tunaki

+0

ok申し訳ありません、今です。私は怒っているか、リンクを変更しています。 – Veronique

答えて

9

Javadocを読む:

public static boolean isInfinite(double v) 

trueを返し、指定された数が、そうでない場合はfalse、大きさが無限大である場合。

だから、のようなもの:

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

OPは、番号が無限であるかどうかを尋ねています。番号が有限でないかどうかは問いません。私はあなたの答えをコメントしました。 –

1

その後、無限大のためのテストとして

a == Double.POSITIVE_INFINITY || a == Double.NEGATIVE_INFINITY

を使用しています。あなたの無限大はゼロによる浮動小数点除算の結果であるならば、あなたも0.0/0.0の結果になります

Double.NAN

をチェックする必要があることに注意してください。残念ながら、falseNaNNaNを含む)を比較しているので、Double.isNaN(a)を使用する必要があります。 +インフィニティ、-Infinity、およびNaNの、および他のすべての例でtrueためfalseになります次に


ビン全部とDouble.isFinite(a)を使用し、。

+0

ここで 'NaN 'の扱いが必要かどうかは分かりません。 OPはそうではないと言いました。それは彼らが事件を考慮しなかったか、実際にそれを処理したくないからであるかどうかは不明です。 –

+0

私はちょうど助けになるよ;-) – Bathsheba

+0

そして私はあなたがいると思う。私はちょうどあなたがおそらくあなた自身の要件をここに追加していると言っています。さらに、 'Double.isInfinite'に対する明示的比較の使用には何の意味もありません。 –

関連する問題