How to implement infinity in Java?
Does Java have anything to represent infinity for every numerical data type? How is it implemented such that I can do mathematical operations with it?
int myInf = infinity; //However it is done myInf + 5; //returns infinity myInf*(-1); //returns negative infinity
I have tried using very large numbers, but I want a proper, easy solution.
double supports Infinity
double inf = Double.POSITIVE_INFINITY; System.out.println(inf + 5); System.out.println(inf - inf); // same as Double.NaN System.out.println(inf * -1); // same as Double.NEGATIVE_INFINITY
Infinity NaN -Infinity
Infinity - Infinity is Not A Number.
Read more... Read less...
I'm supposing you're using integer math for a reason. If so, you can get a result that's functionally nearly the same as POSITIVE_INFINITY by using the MAX_VALUE field of the
Integer myInf = Integer.MAX_VALUE;
(And for NEGATIVE_INFINITY you could use MIN_VALUE.) There will of course be some functional differences, e.g., when comparing
myInf to a value that happens to be MAX_VALUE: clearly this number isn't less than
There's also a library that actually has fields POSITIVE_INFINITY and NEGATIVE_INFINITY, but they are really just new names for MAX_VALUE and MIN_VALUE.
Infinity, you can use
Double which supports
System.out.println(Double.POSITIVE_INFINITY); System.out.println(Double.POSITIVE_INFINITY * -1); System.out.println(Double.NEGATIVE_INFINITY); System.out.println(Double.POSITIVE_INFINITY - Double.NEGATIVE_INFINITY); System.out.println(Double.POSITIVE_INFINITY - Double.POSITIVE_INFINITY);
Infinity -Infinity -Infinity Infinity NaN
Float types have the
I'm not sure that Java has infinity for every numerical type but for some numerical data types the answer is positive:
Also you may find useful the following article which represents some mathematical operations involving +/- infinity: Java Floating-Point Number Intricacies.
Only Double and Float type support