V Javi pomen NaN je Ni številka in je prisoten v java.lang.Double in java.lang.Float razredi. Je posebna vrednost, ki predstavlja nedefinirano številsko vrednost. Na NAN lahko naletimo pri matematičnih izračunih, kjer je rezultat nedefiniran.
- Če poskušamo izračunati kvadratni koren negativnega Math.sqrt(-1), bo vrnil NaN, ker je kvadratni koren negativnega števila nedefiniran.
- Če poskusimo deliti nič z nič, bo vrnil tudi NaN.
primer:
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)); } }
Izhod
NaN NaN NaN
včasih matematika nima smisla, zato NaN obstaja. Namesto vrženja napak Java preprosto vrne NaN, da pokaže, da je nekaj narobe.
Kako ustvariti NaN?
S pomočjo Dvojno oz Lebdi razredov lahko ustvarimo NAN.
dvojno n = dvojno.NaN; // Uporaba Double
bash za zankofloat n = Float.NaN; // Uporaba Float
Kako primerjati vrednosti NaN?
NaN so neurejeni, kar pomeni, da bo vsaka primerjava z NaN vrnila napačno. Če NaN primerjamo z drugim NaN ali če uporabljamo relacijske operatorje, bo rezultat vedno napačen. Zdaj bomo razpravljali o tem, kako NaN deluje v različnih scenarijih.
1. Relacijski operatorji in NaN
- Operatorji numerične primerjave< <= >in >= vedno vrneta false, če sta eden ali oba operanda NaN.
- Operator enakosti == vrne false, če je kateri od operandov NaN.
- Operator neenakosti != vrne true, če je kateri od operandov NaN.
primer:
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); } }
Izhod
Check if equal :false Check if unequal: true Check if equal: false Check if unequal: true false false
2. isnN() Bratje
Ta metoda se uporablja za preverjanje, ali je vrednost NaN.
primer:
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()); } }
Izhod
NaN = true -Infinity = false
3. Plavajoči tip ne povzroči izjem pri delu z matematičnimi vrednostmi
NaN sledi IEEE 754 s plavajočo vejico standard. IEEE 754 števila s plavajočo vejico lahko predstavljajo pozitivno ali negativno neskončnost in NaN. Te tri vrednosti izhajajo iz izračunov, katerih rezultat je nedefiniran ali ga ni mogoče natančno predstaviti. Java sledi znanim matematičnim dejstvom. 1.0 / 0.0 je neskončnost, druge pa so nedoločene oblike, ki jih Java predstavlja kot NaN (ne število).
primer:
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); } }
Izhod
Infinity -Infinity InfinityUstvari kviz