Каков правильный/общепринятый способ печати и преобразования 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 в строку и/или ее печать, гарантируя, что вы всегда имеете одинаковую полную точность?