Java reiškia NaN yra Ne Skaičius ir jis yra java.lang.Dvigubas ir java.lang.Float klases. Tai speciali reikšmė, kuri reiškia neapibrėžtą skaitinę reikšmę. Su NAN galime susidurti matematiniuose skaičiavimuose, kai rezultatas neapibrėžtas.
- Jei bandysime apskaičiuoti neigiamo Math.sqrt(-1) kvadratinę šaknį, ji grąžins NaN, nes neigiamo skaičiaus kvadratinė šaknis neapibrėžta.
- Jei bandysime padalyti nulį iš nulio, tai taip pat grąžins NaN.
Pavyzdys:
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)); } }
Išvestis
NaN NaN NaN
Kartais matematikos nėra prasmės, todėl NaN egzistuoja. Vietoj klaidų, Java tiesiog grąžina NaN, kad parodytų, kad kažkas negerai.
Kaip sukurti NaN?
Su pagalba Dvigubas arba Plūduriuoti klasėse galime sukurti NAN.
dvigubas n = Double.NaN; // Naudojant Double
plūduriuoti n = plūduriuoti.NaN; // Naudojant plūdę
Kaip palyginti NaN vertes?
NaN yra netvarkingi, tai reiškia, kad bet koks palyginimas su NaN bus klaidingas. Jei lyginame NaN su kitu NaN arba naudojame reliacinius operatorius, rezultatas visada bus klaidingas. Dabar aptarsime, kaip NaN veikia įvairiose scenose.
1. Reliaciniai operatoriai ir NaN
- Skaitinio palyginimo operatoriai< <= >ir >= visada grąžina false, jei vienas arba abu operandai yra NaN.
- Lygybės operatorius == grąžina false, jei kuris nors operandas yra NaN.
- Nelygybės operatorius != grąžina true, jei kuris nors operandas yra NaN.
Pavyzdys:
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); } }
Išvestis
Check if equal :false Check if unequal: true Check if equal: false Check if unequal: true false false
2. isnN() Broliai
Šis metodas naudojamas patikrinti, ar vertė yra NaN.
Pavyzdys:
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()); } }
Išvestis
NaN = true -Infinity = false
3. Plaukiojantis tipas nesudaro išimčių dirbant su matematinėmis reikšmėmis
NaN seka IEEE 754 slankiojo kablelio standartinis. IEEE 754 slankiojo kablelio skaičiai gali reikšti teigiamą arba neigiamą begalybę ir NaN. Šios trys reikšmės atsiranda atlikus skaičiavimus, kurių rezultatas neapibrėžtas arba negali būti tiksliai pateiktas. Java seka žinomus matematikos faktus. 1.0 / 0.0 yra begalybė, bet kitos yra neapibrėžtos formos, kurias Java reiškia kaip NaN (ne skaičių).
Pavyzdys:
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); } }
Išvestis
Infinity -Infinity InfinitySukurti viktoriną