Find the Maximum Number (Solution)
00:00
Infinity is a special value in the floating-point data type, which is greater than any other number. You can explicitly define infinity in Python by calling the built-in float()
function with a special string value as an argument, which says "inf"
.
00:15
There’s also negative infinity, which you can obtain by placing a minus sign (-
) in front of the positive infinity or by using the "-inf"
argument.
00:28
Now, unlike integers, Python floats do have a limit or maximum value. If you try to create a floating-point number that exceeds that limit, then you’ll get infinity instead. Here, I’m using 2e500
, which gives me infinity.
00:45
However, to find the smallest exponent that yields infinity, I can use the bisection algorithm by halving the exponent value at each step. So, since 500
is too much, I can try 250
, which is half of the initial exponent. In this case, we’re getting a floating-point number that is clearly not infinity.
01:07
Let’s try something in the middle between 250
and 500
. That would be 375
. Okay, that’s too much. We can try a smaller exponent by finding the middle point between the last two exponent values, which would be 250
plus 375
divided by 2
. We can’t use fractional exponents, so we’ll round it to the nearest whole number, which is 312
.
01:36
This also gives us infinity, so we have to keep trying smaller exponents. The next one should be 281
.
01:47 Okay, that’s too small. Let’s move the other direction then.
01:57
We are getting closer now since the smallest exponents that we’re looking for must be somewhere between 297
and 312
.
02:08
Oh, we’re getting really close now since we only have a few numbers left to try. Why don’t we check them by hand? 306
, that’s still too small.
02:17
307
, also too small. 308
? Bingo. So the smallest exponent that gives us infinity is 308
. That’s the answer. However, there’s a better way to find it.
02:33
This alternative approach is slightly more advanced, so don’t worry if you don’t completely understand it. You can import this standard library module called sys
, which provides access to system-specific parameters.
02:45
The parameter that we are interested in is called float_info
, and it shows a number of low-level details about the floating-point data type in Python, including max_10_exp
, which is equal to 308
that we found manually. Note that this number isn’t set in stone, as it depends on your operating system, hardware, architecture, Python release, and how the Python interpreter was compiled.
03:10 So there’s no single correct answer to this exercise, as it may vary.
03:16 Okay, that wraps up this section. Next up, you’ll switch gears and get your hands dirty with number formatting.
Become a Member to join the conversation.