Next float?

Mark T nospam at
Thu Nov 22 05:48:27 CET 2007

"Steven D'Aprano" <steven at> wrote in message 
news:pan.2007. at
> Is there a simple, elegant way in Python to get the next float from a
> given one? By "next float", I mean given a float x, I want the smallest
> float larger than x.
> Bonus points if I can go in either direction (i.e. the "previous float"
> as well as the next).
> Note to maths pedants: I am aware that there is no "next real number",
> but floats are not reals.
> -- 
> Steven

Here's some functions to get the binary representation of a float.  Then 
just manipulate the bits (an exercise for the reader):

import struct

def f2b(f):
    return struct.unpack('I',struct.pack('f',f))[0]

def b2f(b):
    return struct.unpack('f',struct.pack('I',b))[0]

>>> f2b(1.0)
>>> hex(f2b(1.0))
>>> b2f(0x3f800000)
>>> b2f(0x3f800001)
>>> b2f(0x3f7fffff)


More information about the Python-list mailing list