我输出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.format
将numpy.float32
值投射到 Pythonfloat
s? - 我可以更改一些设置以使 Python 的
str.format
不将numpy.float32
值转换为 Pythonfloat
吗?
如果这是相关的:我使用的是 Python 3.4.5 和 numpy 1.10.4。
python 内部使用 64 位浮点数。没有办法改变这一点。与任何浮点数一样,您必须知道有多少位是有效的。
float32
最多有 8 位有效数字:
print "{:.8g}".format(a)
如果要使用 numpy 的字符串格式,则必须显式转换为字符串:
print "{!s}".format(a)