2012-10-22 16 views
11

Ich sammle einige Daten aus einer Datenbank und addiere sie zusammen, um einige Statistiken zu erhalten, aber da ich einige meiner Daten zurückdatiere, wird die berechnete Summe irgendwann als NaN (nicht ein Nummer) Ich möchte einen if-Satz erstellen, der besagt, dass if (keine Zahl) diese Daten von meiner Tabelle ausschließt.Nach NaN suchen und in einem If verwenden

Wie überprüfe ich, ob die Daten (in diesem Fall doppelt) NaN sind?

+0

Interessieren Sie sich auch für Dezimalzahlen? – Metalhead

Antwort

32

Es gibt statische Methoden Float.isNaN(float) und Double.isNaN(double), die Sie verwenden können.

double x = ... // whatever calculation you do 

if (Double.isNaN(x)) { 
    ... 
} 
+3

'x' kann ein beliebiger numerischer Typ oder ein Wrapper einer Zahl sein, und dies funktioniert weiterhin. d.h. es muss nicht "doppelt" sein. –

+0

Es gibt auch Float.isNan (x) –

+0

Es gibt auch isNaN (x) –

-5

Dies würde für Sie arbeiten.

if(number == Float.NaN) 
+8

Dies wird immer falsch sein als NaN! = NaN –

4

Sie können für NaN auf zwei Arten testen. Sie können die eingebaute Funktion verwenden

Double.isNaN(x) 

oder die Prüfung durchführen dies tut, die

if (x != x) 

versehen x eine double oder ein float

+1

Das zweite Stück Code ist nur gut, wenn x 'double' ist. Wenn der Code aus irgendeinem Grund 'Double' verwendet, wird die Referenz verglichen. – nhahtdh

+0

Wie funktioniert das? Das x ist doppelt, aber keine Zahl? –

+0

@Vash: NaN ist sehr speziell, es ist wahrscheinlich das einzige, das, wenn es nicht gleich zu sich selbst vergleicht, wahr wird. – nhahtdh

Verwandte Themen