TIL:When n + 1 == n in python?

・1 min read

Today I was looking to python docs for doctest and found following

if n+1 == n:  # catch a value like 1e300
    raise OverflowError("n too large")

Immediately I opened the shell and try it:

>>> from math import exp
>>> n = exp(300)
>>> n
1.9424263952412558e+130
>>> n + 1 == n
True

TIL n+1 == n! and how to guard against a ridiculously large number

DISCUSSION (3)
 

That's a fairly awful way to handle floating point limits. Much lower ranges should be checked if the algorithm is in danger of breaking.

 

That's an oft-forgotten error when exposing to remote commands as it is too innocent.

 

If you need numbers that might get that high, maybe pure integer calculations would work.

There's also some arbitrary precision float modules you could use.

Classic DEV Post from Sep 20 '18

Explain JavaScript Promises like I am five.

I am starting to hate JavaScript. Before I blow my head with a gun, someone, pl...

Software Craftsman