logo

NaN (nie liczba) w Javie

W Javie znaczenie NaN Jest Nie liczba i jest obecny w java.lang.Double I java.lang.Float zajęcia. Jest to wartość specjalna, która reprezentuje niezdefiniowaną wartość liczbową. NAN możemy spotkać w obliczeniach matematycznych, gdzie wynik jest nieokreślony.

  • Jeśli spróbujemy obliczyć pierwiastek kwadratowy z liczby ujemnej Math.sqrt(-1), zwróci NaN, ponieważ pierwiastek kwadratowy z liczby ujemnej jest niezdefiniowany.
  • Jeśli spróbujemy podzielić zero przez zero, zwróci również NaN.

Przykład:

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

Wyjście
NaN NaN NaN 

Czasami matematyka nie ma sensu, dlatego istnieje NaN. Zamiast wyrzucać błędy, Java po prostu zwraca NaN, aby pokazać, że coś jest nie tak.



Jak stworzyć NaN?

Z pomocą Podwójnie Lub Platforma klas możemy utworzyć sieć NAN.

podwójne n = Double.NaN; // Używanie Double

float n = Float.NaN; // Używanie pływaka

mylivecricket w grze w krykieta na żywo

Jak porównać wartości NaN?

NaN są nieuporządkowane, co oznacza, że ​​każde porównanie z NaN zwróci wartość false. Jeśli porównamy NaN z innym NaN lub użyjemy operatorów relacyjnych, wynik zawsze będzie fałszywy. Teraz omówimy, jak NaN działa w różnych scenariuszach.

1. Operatory relacyjne i NaN

  • Numeryczne operatory porównania< <= >i >= zawsze zwracają wartość false, jeśli jeden lub oba operandy to NaN.
  • Operator równości == zwraca fałsz, jeśli którykolwiek z operandów to NaN.
  • Operator nierówności != zwraca wartość true, jeśli którykolwiek z operandów to NaN.

Przykład:

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

Wyjście
Check if equal :false Check if unequal: true Check if equal: false Check if unequal: true false false 


2. isN() Bracia

Ta metoda służy do sprawdzania, czy wartość to NaN.

Przykład:

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

Wyjście
NaN = true -Infinity = false 


czytanie pliku csv w Javie

3. Typ zmiennoprzecinkowy nie powoduje wyjątku podczas operowania wartościami matematycznymi

NaN podąża za IEEE 754 zmiennoprzecinkowy standard. IEEE754 Liczby zmiennoprzecinkowe mogą reprezentować dodatnią lub ujemną nieskończoność i NaN. Te trzy wartości wynikają z obliczeń, których wynik jest nieokreślony lub nie można go dokładnie przedstawić. Java podąża za znanymi faktami matematycznymi. 1,0 / 0,0 to nieskończoność, ale pozostałe to formy nieokreślone, które Java reprezentuje jako NaN (nie liczbę).

Przykład:

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

Wyjście
Infinity -Infinity Infinity 
Utwórz quiz