Binary Decimals in Python

Mensanator mensanator at aol.com
Tue Mar 30 17:05:44 EDT 2010


On Mar 30, 1:52 pm, MRAB <pyt... at mrabarnett.plus.com> wrote:
> John Nagle wrote:
> > aditya wrote:
> >> On Mar 30, 10:49 am, Raymond Hettinger <pyt... at rcn.com> wrote:
> >>> On Mar 30, 8:13 am, aditya <bluemangrou... at 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 -




More information about the Python-list mailing list