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

标签 python string numpy floating-point formatting

我输出 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 位 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/

相关文章:

regex - Bash 字符串提取/操作

python - 在 numpy 中对大型 3D 图像进行下采样

python - 如何将用户在 Matplotlib 中输入的点传递到 np.array?

python - 与 Python 并行解析和保存主机名

python - 如何使用 python 将 float 转换为具有预定义位数的定点数

python - uWSGI Empire 模式无法在 Virtualenv 之外工作

python - 如何使用正则表达式删除python字符串中的特定模式?

python - 无法使用 PYODBC 连接到网络外部的远程 SQL Server

java - 字符串分割

python - 如何制作Python图像 'fit'这个数字?