How to convert float to sortable integer in Python
pavlovevidence at gmail.com
Wed Jan 17 08:07:49 CET 2007
> I'm sorry I mistake the function name, the function is
> floatToRawIntBits(), it convert ieee 754 floating point number to
> integer, e.g. if f1>f2 then floatToRawBits(f1) > floatToRawBits(f1)
You can get the raw bits of a floating point number by packing into a
string then unpacking it as an integer, but the invariant you give
doesn't hold when you do that. That is, f1>f2 does not guarantee
rawbits(f1)>rawbits(f2). So be warned.
Python floats are double-precision internally, so the integer returned
would have to hold at least 64-bits (i.e., it'd be a long on 32-bit
> I want convert floating point number to sortable string to index in
> Lucene, so I want first to conver the floating point number to integer
> first, and than convert the integer to sortable string?
I presume that, by "sortable string", you mean a numerical
representation (padded or something), but if all you want is a string
containing the bits of the number, struct.pack("=d",d) will get you an
8-byte string representing the bits without having to change it to an
integer first. Check the documentation for the struct module if you
need a certain endianness.
> so How to convert a ieee 754 floating point to raw bits like the java
> api floatToRawBits do?
See documentation for the struct module.
More information about the Python-list