On Mar 30, 1:52 pm, MRAB <pyt...@mrabarnett.plus.com> wrote: > John Nagle wrote: > > aditya wrote: > >> On Mar 30, 10:49 am, Raymond Hettinger <pyt...@rcn.com> wrote: > >>> On Mar 30, 8:13 am, aditya <bluemangrou...@gmail.com> wrote: > > >>>> To get the decimal representation of a binary number, I can just do > >>>> this: > >>>> int('11',2) # returns 3 > >>>> But decimal binary numbers throw a ValueError: > >>>> int('1.1',2) # should return 1.5, throws error instead. > >>>> Is this by design? It seems to me that this is not the correct > >>>> behavior. > >>> The int() constructor returns integers. > >>> So, look to float() for non-integral values. > >>> Binary representation isn't supported yet, > >>> but we do have hex: > > >>> >>> float.fromhex('1.8') > >>> 1.5 > > >>> Raymond > > >> That looks very elegant, thanks! > > > Hex floats are useful because you can get a string representation > > of the exact value of a binary floating point number. It should > > always be the case that > > > float.fromhex(float.hex(x)) == x > > > That's not always true of decimal representations, due to rounding > > problems. > > Floats have a limited length, unlike ints which are virtually unlimited.
gmpy gives you arbitrary precision floats, also. > > > > > Long discussion of this here: "http://bugs.python.org/issue1580"- Hide > > quoted text - > > - Show quoted text -- Hide quoted text - > > - Show quoted text - -- http://mail.python.org/mailman/listinfo/python-list