Output of the below code confusing me. Why NaN
sometimes and Infinity other times ?
public static void main (String[] args) {
double a = 0.0;
double b = 1.0;
int c = 0;
System.out.println(a/0.0);
System.out.println(a/0);
System.out.println(b/0.0);
System.out.println(b/0);
System.out.println(c/0.0);
System.out.println(c/0);
}
Outputs is:
NaN
NaN
Infinity
Infinity
NaN
Exception in thread "main" java.lang.ArithmeticException: / by zero
What is the deciding factor here ?
POSITIVE_INFINITY is the infinity equivalent in Java and it represents a theoretical highest number. ArithmeticException is only defined for division by 0 for integer type values. If you try to divide a positive or a negative floating point number with 0 then you will get infinity or -infinity respectively.
To implement infinity in Java, we can simply divide the number by zero as shown below in the example.
When dividing two integers, Java uses integer division. In integer division, the result is also an integer.
isNaN() method This method returns true if the value represented by this object is NaN; false otherwise.
This is because of The IEEE Standard for Floating-Point Arithmetic (IEEE 754) which is a technical standard for floating-point computation established in 1985 by the Institute of Electrical and Electronics Engineers (IEEE).
The IEEE floating-point standard,.. specifies that every floating point arithmetic operation, including division by zero, has a well-defined result. The standard supports signed zero, as well as infinity and NaN (not a number). There are two zeroes: +0 (positive zero) and −0 (negative zero) and this removes any ambiguity when dividing.
In IEEE 754 arithmetic,
a ÷ +0
is positive infinity whena
is positive, negative infinity whena
is negative, and NaN whena = ±0.
Source
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With