我输出 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
? - 我可以更改一些设置,让 Python 的
str.format
不 将numpy.float32
值转换为 Pythonfloat
是吗?
如果这是相关的:我正在使用 Python 3.4.5 和 numpy 1.10.4。
最佳答案
Python 内部使用 64 位 float 。没有办法改变这一点。与任何 float 一样,您必须知道有多少位有效。
float32
最多有 8 位有效数字:
print "{:.8g}".format(a)
如果你想使用 numpy 的字符串格式,你必须显式转换为字符串:
print "{!s}".format(a)
关于Python 格式将 numpy.float32 转换为 Python float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47033626/