Description
Original ticket http://projects.scipy.org/numpy/ticket/1924 on 2011-08-03 by trac user claumann, assigned to unknown.
Python supports a hexadecimal representation for floating numbers in float.hex() and float.fromhex():
a = 3.14
a.hex()
'0x1.91eb851eb851fp+1'float.fromhex(a.hex())
3.14
Numpy's loadtxt does not support this hex text format but it seems like it would be a useful enhancement. For example, a simple implementation might come from changing the default converter returned by _getconv for columns of type float:
def _floatconv(x):
try:
return float(x)
except ValueError:
pass
return float.fromhex(x)
And then change the return float in _getconv to return _floatconv. This converter obeys essentially the same semantics (and exceptions) as float() except that it falls back on fromhex before giving up.
A slightly less permissive change would be to check that the string x begins with '0x' before calling fromhex and throwing a ValueError if not. The code above would accept 'bad' and convert it to 2989, which might be unnecessarily permissive.
Best, Chris