Quelle est la manière correcte/acceptée d'imprimer et de convertir un numpy.float64 en une chaîne de caractères ? J'ai remarqué que l'utilisation de print
o str()
perdront un peu de précision. Cependant, repr
maintient la précision totale. Par exemple :
>>> import numpy
>>> print numpy.float64('6374.345407799015')
6374.3454078
>>> print repr(numpy.float64('6374.345407799015'))
6374.3454077990154
-
Je suppose que le simple fait d'appeler print se transforme en appel
str()
sur l'objet float64. Donc, c'est__str__()
pour numpy.float64 mis en œuvre avec quelque chose comme'%s' % (float(self))
ou, d'une manière ou d'une autre, convertit le float64 avec la fonction intégrée de Pythonfloat()
? J'ai essayé de regarder rapidement autour de la source numpy pour cela mais ce n'était pas immédiatement évident ce qui se passait. -
J'ai toujours pensé
repr()
devrait retourner un code Python valide qui pourrait être utilisé pareval()
pour recréer l'objet. Est-ce une convention acceptée ? Heureusement, dans ce cas, numpy ne suit pas cette convention carrepr()
retourne juste le nombre brut sous forme de chaîne de caractères au lieu de quelque chose comme"numpy.float64('6374.345407799015')"
.
Donc, tout ça me perturbe. Quelle est la manière correcte de convertir un numpy.float64 en une chaîne de caractères et/ou de l'imprimer tout en garantissant que vous avez toujours la même précision complète ?