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 InfinityKvíz létrehozása