Каков правильный/общепринятый способ печати и преобразования numpy.float64 в строку? Я заметил, что использование print
или str()
потеряет некоторую точность. Однако repr
поддерживает полную точность. Например:
>>> import numpy
>>> print numpy.float64('6374.345407799015')
6374.3454078
>>> print repr(numpy.float64('6374.345407799015'))
6374.3454077990154
-
Я предполагаю, что только вызов print превращается в вызов
str()
объекта float64. Итак,__str__()
для numpy.float64 реализован с чем-то вроде'%s' % (float(self))
или каким-то образом отбрасывает float64 с встроенным Pythonfloat()
? Я попытался быстро оглядеть источник numpy для этого, но не сразу понял, что происходит. -
Я всегда думал, что
repr()
должен возвращать действительный код Python, который может быть использованeval()
для повторного создания объекта. Это общепринятая конвенция? К счастью, в этом случае numpy не следует этому соглашению, потому чтоrepr()
возвращает только необработанное число как строку, а не что-то вроде"numpy.float64('6374.345407799015')"
.
Итак, все это меня смущает. Каков правильный способ преобразования numpy.float64 в строку и/или ее печать, гарантируя, что вы всегда имеете одинаковую полную точность?