logo

NaN (non un numero) in Java

In Java il significato di NaN È Non un numero ed è presente in java.lang.Double E java.lang.Float classi. È un valore speciale che rappresenta un valore numerico indefinito. Potremmo incontrare NAN nei calcoli matematici in cui il risultato non è definito.

  • Se proviamo a calcolare la radice quadrata di un Math.sqrt(-1) negativo restituirà NaN perché la radice quadrata di un numero negativo non è definita.
  • Se proviamo a dividere zero per zero restituirà anche NaN.

Esempio:

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

Produzione
NaN NaN NaN 

A volte matematica non ha senso, ecco perché esiste NaN. Invece di generare errori, Java restituisce semplicemente NaN per mostrare che qualcosa non va.



if e altro in bash

Come creare NaN?

Con l'aiuto di Raddoppiare O Galleggiante classi possiamo creare una NAN.

doppio n = Doppio.NaN; // Usando Double

float n = Float.NaN; // Utilizzo di Float

Come confrontare i valori NaN?

I NaN non sono ordinati, ciò significa che qualsiasi confronto con NaN restituirà false. Se confrontiamo NaN con un altro NaN o utilizziamo operatori relazionali il risultato sarà sempre falso. Ora discuteremo di come funziona NaN in diversi scenari.

int per stringere in Java

1. Operatori Relazionali e NaN

  • Gli operatori di confronto numerico< <= >e >= restituisce sempre false se uno o entrambi gli operandi sono NaN.
  • L'operatore di uguaglianza == restituisce false se uno degli operandi è NaN.
  • L'operatore di disuguaglianza != restituisce vero se uno degli operandi è NaN.

Esempio:

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

Produzione
Check if equal :false Check if unequal: true Check if equal: false Check if unequal: true false false 


2. isN() Fratelli

Questo metodo viene utilizzato per verificare se un valore è NaN.

Esempio:

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

Produzione
NaN = true -Infinity = false 


ciclo for java

3. Il tipo mobile non produce eccezioni durante il funzionamento con valori matematici

NaN segue il IEEE 754 a virgola mobile standard. IEEE754 i numeri in virgola mobile possono rappresentare l'infinito positivo o negativo e NaN. Questi tre valori derivano da calcoli il cui risultato non è definito o non può essere rappresentato accuratamente. Java sta seguendo fatti matematici noti. 1.0 / 0.0 è infinito ma le altre sono forme indeterminate che Java rappresenta come NaN (non un numero).

Esempio:

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

Produzione
Infinity -Infinity Infinity 
Crea quiz