V Jave význam NaN je Nie Číslo a je prítomný v java.lang.Double a java.lang.Float triedy. Ide o špeciálnu hodnotu, ktorá predstavuje nedefinovanú číselnú hodnotu. S NAN sa môžeme stretnúť pri matematických výpočtoch, kde je výsledok nedefinovaný.
pole v jazyku Java
- Ak sa pokúsime vypočítať druhú odmocninu záporného Math.sqrt(-1), vráti NaN, pretože druhá odmocnina záporného čísla nie je definovaná.
- Ak sa pokúsime vydeliť nulu nulou, vráti sa aj NaN.
Príklad:
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)); } }
Výstup
NaN NaN NaN
Niekedy matematika nedáva zmysel, preto existuje NaN. Namiesto vyhadzovania chýb Java jednoducho vráti NaN, aby ukázala, že niečo nie je v poriadku.
Ako vytvoriť NaN?
S pomocou Dvojité alebo Plávať triedy môžeme vytvoriť NAN.
double n = Double.NaN; // Použitie Double
float n = Float.NaN; // Použitie Float
Ako porovnať hodnoty NaN?
NaN nie sú usporiadané, to znamená, že akékoľvek porovnanie s NaN sa vráti ako nepravda. Ak porovnávame NaN s iným NaN alebo používame relačné operátory, výsledok bude vždy nepravdivý. Teraz budeme diskutovať o tom, ako NaN funguje v rôznych scénach.
1. Relačné operátory a NaN
- Operátory numerického porovnávania< <= >a >= vždy vráti hodnotu false, ak jeden alebo oba operandy sú NaN.
- Operátor rovnosti == vráti hodnotu false, ak je niektorý z operandov NaN.
- Operátor nerovnosti != vráti hodnotu true, ak je jeden z operandov NaN.
Príklad:
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); } }
Výstup
Check if equal :false Check if unequal: true Check if equal: false Check if unequal: true false false
f filmy
2. isN() Bratia
Táto metóda sa používa na kontrolu, či je hodnota NaN.
Príklad:
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()); } }
Výstup
NaN = true -Infinity = false
3. Plávajúci typ nevytvára výnimku pri prevádzke s matematickými hodnotami
NaN nasleduje IEEE 754 s pohyblivou rádovou čiarkou štandardné. IEEE 754 čísla s pohyblivou rádovou čiarkou môžu predstavovať kladné alebo záporné nekonečno a NaN. Tieto tri hodnoty pochádzajú z výpočtov, ktorých výsledok nie je definovaný alebo sa nedá presne znázorniť. Java sa riadi známymi matematickými faktami. 1,0 / 0,0 je nekonečno, ale ostatné sú neurčité formy, ktoré Java predstavuje ako NaN (nie číslo).
Príklad:
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); } }
Výstup
Infinity -Infinity InfinityVytvoriť kvíz