logo

NaN (Nu este un număr) în Java

În Java sensul lui NaN este Nu un număr si este prezent in java.lang.Dublu şi java.lang.Float clasele. Este o valoare specială care reprezintă o valoare numerică nedefinită. Putem întâlni NAN în calculele matematice în care rezultatul este nedefinit.

  • Dacă încercăm să calculăm rădăcina pătrată a unui număr negativ Math.sqrt(-1) va returna NaN deoarece rădăcina pătrată a unui număr negativ este nedefinită.
  • Dacă încercăm să împărțim zero la zero, va returna și NaN.

Exemplu:

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

Ieșire
NaN NaN NaN 

Uneori matematica nu are sens de aceea există NaN. În loc să arunce erori, Java pur și simplu returnează NaN pentru a arăta că ceva nu este în regulă.



Cum se creează NaN?

Cu ajutorul lui Dubla sau Plutește clase putem crea un NAN.

dublu n = Dublu.NaN; // Folosind Double

float n = Float.NaN; // Folosind Float

Cum se compară valorile NaN?

NaN sunt neordonate, înseamnă că orice comparație cu NaN va returna false. Dacă comparăm NaN cu un alt NaN sau folosim operatori relaționali, rezultatul va fi întotdeauna fals. Acum vom discuta cum funcționează NaN în diferite scene.

10 la sută din 60

1. Operatori relaționali și NaN

  • Operatorii de comparare numerică< <= >și >= returnează întotdeauna false dacă unul sau ambii operanzi sunt NaN.
  • Operatorul de egalitate == returnează false dacă oricare dintre operanzi este NaN.
  • Operatorul de inegalitate != returnează adevărat dacă oricare dintre operanzi este NaN.

Exemplu:

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

Ieșire
Check if equal :false Check if unequal: true Check if equal: false Check if unequal: true false false 


2. isnN() Fratilor

Această metodă este folosită pentru a verifica dacă o valoare este NaN.

Exemplu:

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

Ieșire
NaN = true -Infinity = false 


3. Tipul flotant nu produce excepții în timp ce funcționează cu valori matematice

NaN urmează IEEE 754 în virgulă mobilă standard. IEEE 754 numerele în virgulă mobilă pot reprezenta infinitul pozitiv sau negativ și NaN. Aceste trei valori provin din calcule al căror rezultat este nedefinit sau nu poate fi reprezentat cu acuratețe. Java urmărește fapte matematice cunoscute. 1.0 / 0.0 este infinit, dar celelalte sunt forme nedeterminate pe care Java le reprezintă ca NaN (nu un număr).

Exemplu:

int la șir în java
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);  } } 

Ieșire
Infinity -Infinity Infinity 
Creați un test