logo

NaN (nie je číslo) v jazyku Java

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 Infinity 
Vytvoriť kvíz