[Steven D'Aprano] > ... > Will Python always use 64-bit floats? A CPython "float" is whatever the platform C compiler means by "double". The C standard doesn't define the size of a double, so neither does Python define the size of a float.
That said, I don't know of any Python platform to date where a C double was not 64 bits. It's even possible that all _current_ Python platforms use exactly the same format for C double.(the IEEE-754 double format), modulo endianness. There's a subtlety related to that in my pack/unpack code, BTW: using a ">d" format forces `struct` to use a "standard" big-endian double encoding, which is 64 bits, regardless of how the platform C stores doubles and regardless of how many bytes a native C double occupies. So, oddly enough, the pack/unpack code would work even if the platform C double used some, e.g., non-IEEE 4-byte VAX float encoding. The only real docs about this "standard" encoding are in Python's pickletools module: """ float8 = ArgumentDescriptor( name='float8', n=8, reader=read_float8, doc="""An 8-byte binary representation of a float, big-endian. The format is unique to Python, and shared with the struct module (format string '>d') "in theory" (the struct and cPickle implementations don't share the code -- they should). It's strongly related to the IEEE-754 double format, and, in normal cases, is in fact identical to the big-endian 754 double format. On other boxes the dynamic range is limited to that of a 754 double, and "add a half and chop" rounding is used to reduce the precision to 53 bits. However, even on a 754 box, infinities, NaNs, and minus zero may not be handled correctly (may not survive roundtrip pickling intact). """) """ -- http://mail.python.org/mailman/listinfo/python-list