【发布时间】:2017-10-31 10:53:53
【问题描述】:
我正在输出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值转换为 Pythonfloats? - 我可以更改一些设置以使 Python 的
str.format不 将numpy.float32值转换为 Pythonfloats 吗?
如果这是相关的:我使用的是 Python 3.4.5 和 numpy 1.10.4。
【问题讨论】:
-
试试
print('{:g}'.format(a)) -
"为什么 Python 的 str.format 将 numpy.float32 值转换为 Python 浮点数?" NumPy 中,而不是 Python。具体来说,
np.float32.__format__继承自np.generic.__format__,它选择在应用格式化之前转换为常规 Python 浮点数。这完全在 NumPy 的控制之下。代码:github.com/numpy/numpy/blob/… -
@MarkDickinson:谢谢,虽然我无法遵循代码,但信息量很大。你能从中得到完整的答案吗?也许包括避免演员 NumPy 方面的方法?
标签: python string numpy floating-point formatting