What is the proper/accepted way to print and convert a numpy.float64 to a string? I've noticed just using print
or str()
will lose some precision. However, repr
maintains the full precision. For example:
>>> import numpy >>> print numpy.float64('6374.345407799015') 6374.3454078 >>> print repr(numpy.float64('6374.345407799015')) 6374.3454077990154
I assume that just calling print turns into calling str()
on the float64 object. So is __str__()
for numpy.float64 implemented with something like '%s' % (float(self))
or somehow casts the float64 with Python's built-in float()
? I tried to quickly look around the numpy source for this but wasn't immediately obvious what was happening.
I've always thought repr()
should return valid Python code that could be used by eval()
to re-create the object. Is this an accepted convention? Luckily in this case numpy does not follow this convention because repr()
returns just the raw number as a string instead of something like "numpy.float64('6374.345407799015')"
.
So, all of this confuses me. What is the correct way to convert a numpy.float64 to a string and/or print it while guaranteeing you always have the same, full precision?
If you actually want to compute the result more precisely, you could try using the np. longdouble type for your input array, which, depending on your architecture and compiler, might give you an 80- or 128-bit floating point representation, rather than the standard 64-bit np. double *.
To print float values with two decimal places in Python, use the str. format() with “{:. 2f}” as str.
We can use the threshold parameter of the numpy. set_printoptions() function to sys. maxsize to print the complete NumPy array.
The astype
method works well:
>>> numpy.float64('6374.345407799015').astype(str) '6374.345407799015'
Look into numpy.set_printoptions. Specifically,
numpy.set_printoptions(precision=15)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With