Advertisement
Advertisement

## How to implement infinity in Java?

### Question

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?

E.g.

``````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.

2016/04/16
1
143
4/16/2016 7:06:19 PM

### Accepted Answer

`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
``````

prints

``````Infinity
NaN
-Infinity
``````

note: `Infinity - Infinity` is Not A Number.

2012/10/18
195
10/18/2012 10:04:20 AM

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` class:

``````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 `myInf`.

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.

2013/07/31

To use `Infinity`, you can use `Double` which supports `Infinity`: -

``````    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);
``````

OUTPUT: -

``````Infinity
-Infinity
-Infinity

Infinity
NaN
``````
2012/10/18

The `Double` and `Float` types have the `POSITIVE_INFINITY` constant.

2012/10/18

I'm not sure that Java has infinity for every numerical type but for some numerical data types the answer is positive:

``````Float.POSITIVE_INFINITY
Float.NEGATIVE_INFINITY
``````

or

``````Double.POSITIVE_INFINITY
Double.NEGATIVE_INFINITY
``````

Also you may find useful the following article which represents some mathematical operations involving +/- infinity: Java Floating-Point Number Intricacies.

2012/10/18

Only Double and Float type support `POSITIVE_INFINITY` constant.

2012/10/18

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Email: [email protected]