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 InfinityCrea quiz