logo

NaN (nije broj) u Javi

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

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 Infinity 
Napravi kviz