Binary Decimals in Python

John Nagle nagle at animats.com
Tue Mar 30 14:14:07 EDT 2010


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.

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


				John Nagle

	
	



More information about the Python-list mailing list