U Javi značenje NaN je Nije broj i prisutan je u java.lang.Dvostruko i java.lang.Float klase. To je posebna vrijednost koja predstavlja nedefiniranu brojčanu vrijednost. Možemo susresti NAN u matematičkim proračunima gdje je rezultat nedefiniran.
- Ako pokušamo izračunati kvadratni korijen negativnog Math.sqrt(-1) vratit će NaN jer je kvadratni korijen negativnog broja nedefiniran.
- Ako pokušamo podijeliti nulu s nulom, to će također vratiti NaN.
Primjer:
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)); } }
Izlaz
NaN NaN NaN
Ponekad matematika nema smisla zato postoji NaN. Umjesto izbacivanja pogrešaka, Java jednostavno vraća NaN da pokaže da nešto nije u redu.
Kako stvoriti NaN?
Uz pomoć Dvostruko ili Plutati klase možemo stvoriti NAN.
dvostruko n = dvostruko.NaN; // Korištenje Double
float n = Float.NaN; // Korištenje float
Kako usporediti NaN vrijednosti?
NaN su neuređeni, što znači da će svaka usporedba s NaN vratiti false. Ako NaN usporedimo s drugim NaN-om ili koristimo relacijske operatore, rezultat će uvijek biti lažan. Sada ćemo razgovarati o tome kako NaN radi u različitim scenarijima.
1. Relacijski operatori i NaN
- Numerički operatori usporedbe< <= >i >= uvijek vraćaju false ako su jedan ili oba operanda NaN.
- Operator jednakosti == vraća false ako je bilo koji od operanda NaN.
- Operator nejednakosti != vraća true ako je bilo koji od operanda NaN.
Primjer:
chmod 755Java
// 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); } }
Izlaz
Check if equal :false Check if unequal: true Check if equal: false Check if unequal: true false false
2. isnN() Braćo
Ova se metoda koristi za provjeru je li vrijednost NaN.
Primjer:
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()); } }
Izlaz
NaN = true -Infinity = false
3. Plutajući tip ne stvara iznimke tijekom rada s matematičkim vrijednostima
NaN slijedi IEEE 754 pokretni zarez standard. IEEE 754 brojevi s pomičnim zarezom mogu predstavljati pozitivnu ili negativnu beskonačnost i NaN. Ove tri vrijednosti proizlaze iz izračuna čiji je rezultat nedefiniran ili se ne može točno prikazati. Java slijedi poznate matematičke činjenice. 1.0 / 0.0 je beskonačno, ali ostali su neodređeni oblici koje Java predstavlja kao NaN (ne broj).
Primjer:
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); } }
Izlaz
Infinity -Infinity InfinityNapravi kviz