2010-04-11 21 views
83

Ho un programma che tenta di ridurre a double un numero desiderato. L'output che ottengo è NaN.In Java, cosa significa NaN?

Cosa significa "NaN" in Java?

+0

C'è una buona descrizione di NaN e delle più comuni insidie ​​quando si utilizza NaN in Java: http://ppkwok.blogspot.co.uk/2012/11/java-cafe-1-never-write-nan-nan_24 .html – Phil

risposta

122

Tratto da this page:

"nan" sta per "non un numero". "Nan" viene prodotto se l'operazione di virgola mobile ha alcuni parametri di input che provocano l'effetto di un risultato non definito. Ad esempio, 0.0 diviso per 0.0 è aritmeticamente indefinito. Anche la radice quadrata di un numero negativo non è definita.

+16

Inoltre, NaN è definito dallo standard IEEE per l'aritmetica in virgola mobile (IEEE 754) in modo abbastanza esplicito che Java segue ciecamente. Leggere lo standard apre gli occhi su un sacco di cose, i molteplici valori di zero sono una delle cose. – Esko

+31

Inoltre, 'NaN' ha la proprietà interessante di essere l'unico" numero "che non è uguale a se stesso se confrontato. Quindi un test comune (e in molti linguaggi l'unico) se un numero 'x' è' NaN' è il seguente: 'booleano isNaN (x) {return x! = X;}' – quazgar

+0

Solo a parte: JavaScript nativo ' isNaN (...) 'non funziona come la funzione di @ quazgar. Invece, restituisce anche 'true' quando lo passa un non numero, come una stringa primitiva, un oggetto o' undefined'. In questi casi, 'x! == x' produce invece' false'. Quindi, la versione di quazgar controlla bene se 'x' è un numero NaN * *. (So ​​che la domanda riguarda Java, non JavaScript.) – Arjan

3

Non è un tipo Java, ma in JS e in altre lingue uso "Non un numero", il che significa che alcune operazioni non hanno causato un numero valido.

3

Letteralmente significa "Non un numero". Sospetto che ci sia qualcosa di sbagliato nel tuo processo di conversione.

controllare la sezione non un numero a this reference

3

NaN = Not a Number.

8

NaN significa "Not a Number" ed è il risultato di operazioni non definiti su numeri in virgola mobile come ad esempio dividendo zero per zero. (Si noti che mentre dividendo un numero diverso da zero per lo zero è anche solitamente indefinito in matematica, non risulta in NaN ma in infinito positivo o negativo).

4

NaN significa "Non un numero". È un valore in virgola mobile speciale che significa che il risultato di un'operazione non è stato definito o non è rappresentabile come un numero reale.

Vedere here per ulteriori spiegazioni di questo valore.

10

NaN significa “Not a Number” ed è fondamentalmente una rappresentazione di un particolare valore in virgola mobile nello standard IEE 754 floating point. NaN generalmente significa che il valore è qualcosa che non può essere espresso con un numero in virgola mobile valido.

Una conversione darà come risultato questo valore, quando il valore che viene convertito è un'altra cosa, ad esempio quando si converte una stringa che non rappresenta un numero.

3

Mezzi Not a Number. È una rappresentazione comune per un valore numerico impossibile in molti linguaggi di programmazione.