Binary Decimals in Python

MRAB python at mrabarnett.plus.com
Tue Mar 30 20:52:36 CEST 2010


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.

> Long discussion of this here: "http://bugs.python.org/issue1580"
> 



More information about the Python-list mailing list