En Java el significado de Yaya es No es un número y está presente en java.lang.Double y java.lang.Float clases. Es un valor especial que representa un valor numérico indefinido. Podemos encontrarnos con NAN en cálculos matemáticos donde el resultado no está definido.
- Si intentamos calcular la raíz cuadrada de un Math.sqrt(-1) negativo, devolverá NaN porque la raíz cuadrada de un número negativo no está definida.
- Si intentamos dividir cero entre cero, también devolverá NaN.
Ejemplo:
Java// Java Program to demonstrates NAN // Define a class public class Geeks { // main method public static void main(String[] args) { System.out.println(2.0 % 0.0); System.out.println(0.0 / 0.0); System.out.println(Math.sqrt(-1)); } }
Producción
NaN NaN NaN
A veces matemáticas No tiene sentido, por eso existe NaN. En lugar de generar errores, Java simplemente devuelve NaN para mostrar que algo anda mal.
¿Cómo crear NaN?
Con la ayuda de Doble o Flotar clases podemos crear una NAN.
doble n = Doble.NaN; // Usando doble
flotador n = flotador.NaN; // Usando flotador
¿Cómo comparar valores NaN?
Los NaN están desordenados, lo que significa que cualquier comparación con NaN arrojará falso. Si comparamos NaN con otro NaN o utilizamos operadores relacionales el resultado siempre será falso. Ahora vamos a discutir cómo funciona NaN en diferentes escenarios.
1. Operadores relacionales y NaN
- Los operadores de comparación numérica< <= >y >= siempre devuelve falso si uno o ambos operandos son NaN.
- El operador de igualdad == devuelve falso si alguno de los operandos es NaN.
- El operador de desigualdad != devuelve verdadero si cualquiera de los operandos es NaN.
Ejemplo:
El proceso de Android Acore sigue deteniéndoseJava
// Java program to test relational operator on NaN public class Geeks { public static void main(String[] args) { // comparing NaN constant field defined in // Float Class System.out.print('Check if equal :'); System.out.println(Float.NaN == Float.NaN); System.out.print('Check if unequal: '); System.out.println(Float.NaN != Float.NaN); // comparing NaN constant field defined in Double Class System.out.print('Check if equal: '); System.out.println(Double.NaN == Double.NaN); System.out.print('Check if unequal: '); System.out.println(Double.NaN != Double.NaN); // More Examples double NaN = 2.1 % 0; System.out.println((2.1%0) == NaN); System.out.println(NaN == NaN); } }
Producción
Check if equal :false Check if unequal: true Check if equal: false Check if unequal: true false false
2. isN() Hermanos
Este método se utiliza para comprobar si un valor es NaN.
Ejemplo:
Java// Demonstrating isNaN() import java.lang.*; // Created a class public class Geeks { // main method public static void main(String[] args) { Double x = new Double(-2.0/0.0); Double y = new Double(0.0/0.0); // returns false if this Double value is not a Not-a-Number (NaN) System.out.println(y + ' = ' + y.isNaN()); // returns true if this Double value is a Not-a-Number (NaN) System.out.println(x + ' = ' + x.isNaN()); } }
Producción
NaN = true -Infinity = false
3. El tipo flotante no produce excepciones al operar con valores matemáticos
NaN sigue el IEEE 754 de punto flotante estándar. IEEE 754 Los números de punto flotante pueden representar infinito positivo o negativo y NaN. Estos tres valores surgen de cálculos cuyo resultado no está definido o no se puede representar con precisión. Java sigue hechos matemáticos conocidos. 1.0/0.0 es infinito pero los demás son formas indeterminadas que Java representa como NaN (no un número).
Ejemplo:
Java// Demonstrating output of floating // point number operations public class Geeks { public static void main(String[] args) { System.out.println(2.0 / 0); System.out.println(-2.0 / 0); System.out.println(9.0E234 / 0.1E-234); } }
Producción
Infinity -Infinity InfinityCrear cuestionario