我正在输出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
我可以更改某些设置以使Python的str.format不将numpy.float32值强制转换为Python float吗?


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

最佳答案

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

float32最多具有8位有效数字:

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


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

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

关于python - Python格式将numpy.float32转换为Python float,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47033626/

10-11 10:23