2012-10-22 11 views
11

Sto raccogliendo alcuni dati da un database e li ho sommati per ottenere alcune statistiche, ma dato che ho dato indietro alcuni dei miei dati allora la somma calcolata verrà a volte come NaN (non un numero) Voglio creare una frase if che dice se (non un numero) quindi escludere questi dati dalla mia tabella.Controllare NaN e usarlo in un

Come si verifica se i dati (in questo caso doppio) sono NaN?

+0

Ti piacciono anche i decimali? – Metalhead

risposta

32

Esistono metodi statici Float.isNaN(float) e Double.isNaN(double) che è possibile utilizzare.

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

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

'x' può essere un qualsiasi tipo numerico o un wrapper di un numero e questo funzionerà ancora. cioè non deve essere 'double'. –

+0

C'è anche Float.isNan (x) –

+0

C'è anche isNaN (x) –

-5

Questo potrebbe funzionare per voi.

if(number == Float.NaN) 
+8

Questo sarà sempre falso come NaN! = NaN –

4

È possibile eseguire il test di NaN in due modi. È possibile utilizzare il costruito in funzione

Double.isNaN(x) 

o eseguire il controllo di questo non fa che è

if (x != x) 

fornito x è un double o un float

+1

Il secondo pezzo di codice è valido solo se x è 'double'. Se per qualche ragione il codice usa 'Double', finirà per confrontare il riferimento. – nhahtdh

+0

Come funziona? Quella x è doppia, ma non un numero? –

+0

@Vash: NaN è molto speciale, è probabilmente l'unica cosa che quando il confronto non è uguale a se stesso restituirà true. – nhahtdh