以全精度打印numpy.float64

2024-05-15 18:45:38 发布

您现在位置:Python中文网/ 问答频道 /正文

打印numpy.float64并将其转换为字符串的正确/可接受的方法是什么?我注意到仅仅使用printstr()会失去一些精度。但是,repr保持完全精度。例如:

>>> import numpy
>>> print numpy.float64('6374.345407799015')
6374.3454078
>>> print repr(numpy.float64('6374.345407799015'))
6374.3454077990154
  1. 我假设只要调用print就会变成对float64对象调用str()。那么,__str__()for numpy.float64是用'%s' % (float(self))之类的东西实现的,还是用Python内置的float()来强制转换float64呢?我试着快速地在核源周围寻找这个,但并没有立即发现发生了什么。

  2. 我一直认为repr()应该返回有效的Python代码,可供eval()用于重新创建对象。这是公认的惯例吗?幸运的是,在这种情况下,numpy没有遵循这个约定,因为repr()只返回原始数字作为字符串,而不是像"numpy.float64('6374.345407799015')"这样的字符串。

所以,所有这些都让我困惑。如何正确地将numpy.float64转换为字符串和/或打印它,同时保证始终具有相同的完全精度?


Tags: 对象方法字符串importselfnumpyfor精度
2条回答

astype方法工作得很好:

>>> numpy.float64('6374.345407799015').astype(str)
'6374.345407799015'

看看numpy.set_printoptions。具体来说

numpy.set_printoptions(precision=15)

相关问题 更多 >