logo

NaN (Keine Zahl) in Java

In Java ist die Bedeutung von NaN Ist Keine Zahl und es ist vorhanden in java.lang.Double Und java.lang.Float Klassen. Es handelt sich um einen Sonderwert, der einen undefinierten numerischen Wert darstellt. Bei mathematischen Berechnungen, bei denen das Ergebnis undefiniert ist, kann es vorkommen, dass wir auf NAN stoßen.

  • Wenn wir versuchen, die Quadratwurzel einer negativen Zahl Math.sqrt(-1) zu berechnen, wird NaN zurückgegeben, da die Quadratwurzel einer negativen Zahl undefiniert ist.
  • Wenn wir versuchen, Null durch Null zu dividieren, wird auch NaN zurückgegeben.

Beispiel:

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));  } } 

Ausgabe
NaN NaN NaN 

Manchmal Mathematik macht keinen Sinn, deshalb existiert NaN. Anstatt Fehler auszulösen, gibt Java einfach NaN zurück, um zu zeigen, dass etwas nicht stimmt.



Wie erstelle ich NaN?

Mit Hilfe von Doppelt oder Schweben Klassen können wir ein NAN erstellen.

double n = Double.NaN; // Double verwenden

float n = Float.NaN; // Float verwenden

Wie vergleiche ich NaN-Werte?

Da NaN ungeordnet sind, bedeutet dies, dass jeder Vergleich mit NaN den Wert „false“ zurückgibt. Wenn wir NaN mit einem anderen NaN vergleichen oder relationale Operatoren verwenden, ist das Ergebnis immer falsch. Jetzt werden wir diskutieren, wie NaN in verschiedenen Szenarien funktioniert.

1. Vergleichsoperatoren und NaN

  • Die numerischen Vergleichsoperatoren< <= >und >= geben immer false zurück, wenn einer oder beide Operanden NaN sind.
  • Der Gleichheitsoperator == gibt false zurück, wenn einer der Operanden NaN ist.
  • Der Ungleichheitsoperator != gibt true zurück, wenn einer der Operanden NaN ist.

Beispiel:

Java
// 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);  } } 

Ausgabe
Check if equal :false Check if unequal: true Check if equal: false Check if unequal: true false false 


2. isnN() Brüder

Mit dieser Methode wird überprüft, ob ein Wert NaN ist.

Beispiel:

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());    } }  

Ausgabe
NaN = true -Infinity = false 


3. Der Floating-Typ erzeugt beim Arbeiten mit mathematischen Werten keine Ausnahme

NaN folgt dem IEEE 754-Gleitkomma Standard. IEEE 754 Gleitkommazahlen können positive oder negative Unendlichkeit und NaN darstellen. Diese drei Werte ergeben sich aus Berechnungen, deren Ergebnis undefiniert ist oder nicht genau dargestellt werden kann. Java folgt bekannten mathematischen Fakten. 1,0 / 0,0 ist unendlich, aber die anderen sind unbestimmte Formen, die Java als NaN (keine Zahl) darstellt.

Beispiel:

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);  } } 

Ausgabe
Infinity -Infinity Infinity 
Quiz erstellen