logo

NaN (не е число) в Java

В 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 
Създаване на тест