Python 格式将 numpy.float32 转换为 Python float



我输出numpy.float32值并得到以下结果:

> import numpy as np
> a = np.float32(0.1)
> a, str(a), repr(a)
(0.1, '0.1', '0.1')
> '{}'.format(a)
'0.10000000149011612'
> float(a)
0.10000000149011612

我想'{}'.format(a) '0.1'返回。

所以我的问题是:

  • 为什么 Python 的str.formatnumpy.float32值投射到 Python float s?
  • 我可以更改一些设置以使 Python 的str.formatnumpy.float32值转换为 Python float吗?

如果这是相关的:我使用的是 Python 3.4.5 和 numpy 1.10.4。

python 内部使用 64 位浮点数。没有办法改变这一点。与任何浮点数一样,您必须知道有多少位是有效的。

float32最多有 8 位有效数字:

print "{:.8g}".format(a)

如果要使用 numpy 的字符串格式,则必须显式转换为字符串:

print "{!s}".format(a)

最新更新