2010-04-11 18 views
83

Tengo un programa que intenta reducir un double hasta un número deseado. El resultado que obtengo es NaN.En Java, ¿qué significa NaN?

¿Qué significa NaN en Java?

+0

Hay una buena descripción de NaN y de las trampas comunes al usar NaN en Java: http://ppkwok.blogspot.co.uk/2012/11/java-cafe-1-never-write-nan-nan_24 .html – Phil

Respuesta

122

Tomado de this page:

"NaN" significa "no es un número". "Nan" se produce si una operación de coma flotante tiene algunos parámetros de entrada que hacen que la operación produzca algún resultado indefinido. Por ejemplo, 0.0 dividido por 0.0 no está aritméticamente definido. Tomar la raíz cuadrada de un número negativo tampoco está definido.

+16

Además, NaN está definido por el estándar IEEE para aritmética de coma flotante (IEEE 754) bastante explícitamente, que Java sigue ciegamente. Leer el estándar abre los ojos a un montón de cosas, los valores múltiples de cero son una de las cosas. – Esko

+31

Además, 'NaN' tiene la interesante propiedad de ser el único" número "que no es igual a él en comparación. Por lo tanto, una prueba común (y en muchos idiomas la única) si un número 'x' es' NaN' es la siguiente: 'boolean isNaN (x) {return x! = X;}' – quazgar

+0

Solo como un aparte: JavaScript's native ' isNaN (...) 'no funciona como la función de @ quazgar. En cambio, incluso devuelve 'verdadero' al pasar un número no, como una cadena primitiva, un objeto o 'indefinido'. En esos casos, 'x! == x' produce' false' en su lugar. Entonces, la versión de Quazgar comprueba muy bien si 'x' es un número NaN * *. (Sé que la pregunta es sobre Java, no sobre JavaScript.) – Arjan

3

No soy Java, pero en JS y en otros idiomas lo uso como "No es un número", lo que significa que algunas operaciones provocaron que no se convirtiera en un número válido.

3

Literalmente significa "No es un número". Sospecho que algo está mal con su proceso de conversión.

Mira la sección no es un número en this reference

3

NaN = Not a Number.

8

NaN significa "no es un número" y es el resultado de las operaciones definidas en los números de coma flotante como por ejemplo dividiendo cero por cero. (Tenga en cuenta que aunque dividir un número distinto de cero entre cero también suele ser indefinido en matemáticas, no da como resultado NaN, sino un infinito positivo o negativo).

4

NaN significa "No es un número". Es un valor de coma flotante especial que significa que el resultado de una operación no se definió o no se puede representar como un número real.

Consulte here para obtener más información sobre este valor.

10

NaN significa “no es un número” y es básicamente una representación de un valor de punto flotante especial en el estándar IEE 754 floating point. NaN generalmente significa que el valor es algo que no se puede expresar con un número de punto flotante válido.

Una conversión dará como resultado este valor, cuando el valor que se está convirtiendo es otra cosa, por ejemplo, al convertir una cadena que no representa un número.

3

Significa que no es un número. Es una representación común para un valor numérico imposible en muchos lenguajes de programación.