logo

NaN (nem szám) Java nyelven

Java nyelven a jelentése NaN van Nem szám és jelen van benne java.lang.Double és java.lang.Float osztályok. Ez egy speciális érték, amely meghatározatlan numerikus értéket jelent. NAN-nal találkozhatunk matematikai számításoknál, ahol az eredmény definiálatlan.

  • Ha megpróbáljuk kiszámítani egy negatív Math.sqrt(-1) négyzetgyökét, akkor NaN-t ad vissza, mivel egy negatív szám négyzetgyöke nincs definiálva.
  • Ha megpróbáljuk elosztani nullát nullával, akkor NaN-t is visszaad.

Példa:

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

Kimenet
NaN NaN NaN 

Néha matematika nincs értelme, ezért létezik a NaN. Ahelyett, hogy hibákat dobna ki, a Java egyszerűen visszaadja a NaN-t, jelezve, hogy valami nincs rendben.



Hogyan készítsünk NaN-t?

Segítségével Kettős vagy Úszó osztályokban létrehozhatunk NAN-t.

double n = Double.NaN; // A Double használata

float n = Float.NaN; // Float használata

Hogyan hasonlítsuk össze a NaN értékeket?

A NaN rendezetlen, ez azt jelenti, hogy a NaN-nal való bármilyen összehasonlítás hamis eredményt ad. Ha a NaN-t egy másik NaN-hez hasonlítjuk, vagy relációs operátorokat használunk, az eredmény mindig hamis lesz. Most azt fogjuk megvitatni, hogy a NaN hogyan működik különböző forgatókönyvekben.

1. Relációs operátorok és NaN

  • A numerikus összehasonlító operátorok< <= >és >= mindig hamis értéket ad vissza, ha az egyik vagy mindkét operandus NaN.
  • Az == egyenlőség operátor hamis értéket ad vissza, ha bármelyik operandus NaN.
  • A != egyenlőtlenség operátor igazat ad vissza, ha bármelyik operandus NaN.

Példa:

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

Kimenet
Check if equal :false Check if unequal: true Check if equal: false Check if unequal: true false false 


2. isnN() Testvérek

Ezzel a módszerrel ellenőrizhető, hogy az érték NaN-e.

Példa:

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

Kimenet
NaN = true -Infinity = false 


3. A lebegő típus nem hoz létre kivételt, ha matematikai értékekkel dolgozik

NaN követi a IEEE 754 lebegőpontos standard. IEEE 754 A lebegőpontos számok pozitív vagy negatív végtelent és NaN-t jelenthetnek. Ez a három érték olyan számításokból adódik, amelyek eredménye nem definiált vagy nem ábrázolható pontosan. A Java követi az ismert matematikai tényeket. Az 1.0 / 0.0 a végtelen, de a többi határozatlan alak, amelyet a Java NaN-ként (nem számként) ábrázol.

Példa:

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

Kimenet
Infinity -Infinity Infinity 
Kvíz létrehozása