В Java значението на NaN е Не е номер и присъства в java.lang.Double и java.lang.Float класове. Това е специална стойност, която представлява недефинирана числова стойност. Може да срещнем NAN в математически изчисления, където резултатът е недефиниран.
- Ако се опитаме да изчислим квадратния корен на отрицателно Math.sqrt(-1), той ще върне NaN, защото квадратният корен на отрицателно число е недефиниран.
- Ако се опитаме да разделим нула на нула, това също ще върне NaN.
Пример:
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)); } }
Изход
NaN NaN NaN
Понякога математика няма смисъл, затова съществува NaN. Вместо да извежда грешки, Java просто връща NaN, за да покаже, че нещо не е наред.
филмова актриса река
Как да създадете NaN?
С помощта на Двойна или Поплавък класове можем да създадем NAN.
двойно n = Double.NaN; // Използване на Double
float n = Float.NaN; // Използване на Float
Как да сравняваме NaN стойностите?
NaN са неподредени, това означава, че всяко сравнение с NaN ще върне невярно. Ако сравним NaN с друг NaN или използваме релационни оператори, резултатът винаги ще бъде грешен. Сега ще обсъдим как работи NaN в различни сцени.
arp - команда
1. Релационни оператори и NaN
- Числени оператори за сравнение< <= >и >= винаги връща false, ако единият или и двата операнда са NaN.
- Операторът за равенство == връща false, ако някой от операндите е NaN.
- Операторът за неравенство != връща true, ако някой от операндите е NaN.
Пример:
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); } }
Изход
Check if equal :false Check if unequal: true Check if equal: false Check if unequal: true false false
2. isnN() Братя
Този метод се използва за проверка дали дадена стойност е NaN.
Пример:
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()); } }
Изход
NaN = true -Infinity = false
char към int java
3. Плаващият тип не създава изключения при работа с математически стойности
NaN следва IEEE 754 с плаваща запетая стандартен. IEEE 754 числата с плаваща запетая могат да представляват положителна или отрицателна безкрайност и NaN. Тези три стойности възникват от изчисления, чийто резултат е недефиниран или не може да бъде представен точно. Java следва известни математически факти. 1.0 / 0.0 е безкрайност, но другите са неопределени форми, които Java представя като NaN (не число).
Пример:
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); } }
Изход
Infinity -Infinity InfinityСъздаване на тест