You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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:
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
The text was updated successfully, but these errors were encountered:
Add _floatconv to npyio.py as a default floating point converter. This
uses float() as a type conversion with a fallback on (ValueError) to
float.fromhex().
Closesnumpy#2517.
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():
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
The text was updated successfully, but these errors were encountered: