How can I represent an infinite number in python? No matter which number you enter in the program, no number should be greater than this representation of infinity.
-
54`math.inf` is useful as an initial value in optimisation problems, because it works correctly with min, eg. `min(5, math.inf) == 5`. For example, in shortest path algorithms, you can set unknown distances to `math.inf` without needing to special case `None` or assume an upper bound `9999999`. Similarly, you can use `-math.inf` as a starting value for maximisation problems. – Colonel Panic Oct 12 '16 at 10:59
-
1In most cases, an alternative to using math.inf in optimization problems is to start with the first value. – Tobias Bergkvist May 30 '20 at 07:26
-
2Can't help but wonder how so many Python question seems to attract a multitude of ways to do the same thing. How is that Pythonian or compatible with Zen of Python.... – nyholku Oct 25 '21 at 14:25
-
1@nyholku agree.. `There should be one-- and preferably only one --obvious way to do it.` – Sнаđошƒаӽ Feb 10 '22 at 01:17
-
@nyholku It looks to me like the answers here are all substantively suggesting doing the same thing, though. Floating-point infinity is the same built-in object whether you access it as a constant in the `math` standard library or by asking the `float` type to parse the string `"inf"`. – Karl Knechtel Jun 02 '23 at 01:32
13 Answers
In Python, you can do:
test = float("inf")
In Python 3.5, you can do:
import math
test = math.inf
And then:
test > 1
test > 10000
test > x
Will always be true. Unless of course, as pointed out, x is also infinity or "nan" ("not a number").
Additionally (Python 2.x ONLY), in a comparison to Ellipsis
, float(inf)
is lesser, e.g:
float('inf') < Ellipsis
would return true.

- 11,644
- 6
- 31
- 53
-
7Note that infinity is defined in the norm IEEE 754-1985 (http://en.wikipedia.org/wiki/IEEE_754-1985), which Any modern language will rely on. Another point is that, according to this norm, infinity must (obviously) be a floating-point number. This might explain why Python have chosen this akward syntax. – quickbug Mar 05 '15 at 12:00
-
3And you can do `-float("inf")` to get minus infinity which is smaller than any other number. – Sergey Zakharov Jan 06 '21 at 11:16
Since Python 3.5 you can use math.inf
:
>>> import math
>>> math.inf
inf
No one seems to have mentioned about the negative infinity explicitly, so I think I should add it.
For negative infinity:
-math.inf
For positive infinity (just for the sake of completeness):
math.inf

- 16,753
- 12
- 73
- 90
-
6How do `float("inf")`, `math.inf`, and `np.inf` compare? Which one to use when? – stefanbschneider Mar 30 '22 at 07:01
-
3@CGFoX Use the first one if you don't want to load packages, that's about the height of it. – ajsp Jul 14 '22 at 09:53
I don't know exactly what you are doing, but float("inf")
gives you a float Infinity, which is greater than any other number.

- 364,293
- 75
- 561
- 662
There is an infinity in the NumPy library: from numpy import inf
. To get negative infinity one can simply write -inf
.

- 5,971
- 6
- 49
- 59
-
2How do `float("inf")`, `math.inf`, and `np.inf` compare? Which one to use when? – stefanbschneider Mar 30 '22 at 07:01
-
1The first two are native i.e. require no dependency. `np.inf` requires the Numpy package. `float('inf')` is a bit hacky as it involves parsing a string, but on the upside it does not even require an import and the parsing is typically computationally negligible. If you use one of the math packages anyway, though, then just use them. If you happen to use both `math` and `np`, then `np.inf` is the shortest one. – Lenar Hoyt Mar 30 '22 at 16:33
Another, less convenient, way to do it is to use Decimal
class:
from decimal import Decimal
pos_inf = Decimal('Infinity')
neg_inf = Decimal('-Infinity')

- 5,840
- 1
- 22
- 17
-
31why don't you add _why it is less convenient and why anyone should use it_? – Niccolò Jul 25 '14 at 11:59
-
Main drawback for me is length of this solution, it's not so clear and concise. But someone might actually prefer this. – Denis Malinovsky Jul 25 '14 at 16:56
-
-
5Let's see: `Decimal('Infinity') == float('inf')` returns `True`, so it's pretty much the same. – Denis Malinovsky Nov 01 '14 at 18:17
-
His question is if wouldn't it be of a different type and the answer is yes. Should've checked `Decimal('Infinity') is float('inf')` and that's a `False` – Afzal S.H. Jun 22 '15 at 07:47
-
10
-
6infinity is different even from itself, so your comment didn't make much sense to me, IMHO – nemesisdesign Jun 29 '15 at 13:20
-
1@nemesisdesign Not true. `Inf == Inf` in standard float arithmetic. Maybe you are thinking of `NaN != NaN`? – a06e Mar 17 '17 at 13:45
-
1@becko, in python the `==` operator and the `is` operator mean two different things. Try to run in the python REPL the following code: `float('inf') is float('inf')` and `float('inf') == float('inf')` – nemesisdesign Mar 21 '17 at 14:36
-
10`float('inf') is float('inf')` -> `False`, just holds that they are different objects with different instances, but not that the internal contents are different -- actually as @nemesisdesign pointed `float('int') == float('int')` holds to `True`. This is the same problem like comparing mutable objects like [1,2,3] is [1,2,3] and [1,2,3] == [1,2,3], which are, in order, False and True.. More info see: https://stackoverflow.com/questions/2988017/string-comparison-in-python-is-vs – Manoel Vilela Sep 01 '17 at 10:51
In python2.x there was a dirty hack that served this purpose (NEVER use it unless absolutely necessary):
None < any integer < any string
Thus the check i < ''
holds True
for any integer i
.
It has been reasonably deprecated in python3. Now such comparisons end up with
TypeError: unorderable types: str() < int()

- 31,947
- 10
- 111
- 111
-
6If you really have yo use this, at least wrap it in some readable names like: `MIN_INFINITY = None; INFINITY = "inf"; MIN_INFINITY < x < INFINITY` – Ali Rasim Kocal Jan 08 '15 at 14:41
-
6
Also if you use SymPy you can use sympy.oo
>>> from sympy import oo
>>> oo + 1
oo
>>> oo - oo
nan
etc.

- 12,464
- 7
- 65
- 73

- 692
- 1
- 15
- 29
Infinity
1. Using float('inf')
and float('-inf)
positive_infinity = float('inf')
negative_infinity = float('-inf')
2. Using Python’s math module
import math
positive_infinity = math.inf
negative_infinity = -math.inf
3. Integer maxsize
import sys
maxSize = sys.maxsize
minSize = -sys.maxsize
4. Using Python’s decimal module
from decimal import Decimal
positive_infinity = Decimal('Infinity')
negative_infinity = Decimal('-Infinity')
5. Using Numpy Library
from numpy import inf
positive_infinity = inf
negative_infinity = -inf

- 1,020
- 12
- 25
For Positive Infinity
pos_inf_val = float("infinity")
For Negative Infinity
neg_inf_val = float("-infinity")

- 901
- 11
- 14
Representing ∞ in python
float("inf")
or float("INF")
or float("Inf")
or float("inF")
or float("infinity")
or float("Infinity")
creates a float
object holding ∞
You can also represent -∞ in python
float("-inf")
or float("-INF")
or float("-Inf")
or float("-infinity")
creates a float object holding -∞
You can perform arithmetic operations:
infinity = float("inf")
ninfinity = float("-inf")
nan = float("nan")
print(infinity*infinity)#inf
print(ninfinity+infinity)#not a number
print(1/-infinity)#is -0.0
print(nan*nan)# is not a number
print(1/infinity) # is 0.0 since 1/∞ is 0
Output:
$ python3 floating.py
inf
nan
-0.0
nan
0.0

- 2,415
- 2
- 22
- 32
In Summary, there is two kinds definition for Infinity.
For Positive Infinity
posVal1 = math.inf
posVal2 = float("inf")
For Negative Infinity
negVal1 = -math.inf
negVal2 = float("-inf")

- 3,927
- 33
- 31
Use:
float('inf')
Or the math module:
import math
math.inf
But if you print it, they will both return inf
, which proves that math
uses float('inf')
as well.

- 319
- 1
- 16