私信  •  关注

user2357112 Andrew Jaffe

user2357112 Andrew Jaffe 最近创建的主题
user2357112 Andrew Jaffe 最近回复了
5 年前
回复了 user2357112 Andrew Jaffe 创建的主题 » For循环范围步骤更改为float python[duplicate]

与其直接使用小数步,不如用你想要的点数来表达。否则,浮点舍入误差可能会给出错误的结果。

你可以使用 linspace 功能来自 NumPy 库(不是标准库的一部分,但相对容易获得)。 邻接空间 获取要返回的多个点,还可以指定是否包含右端点:

>>> np.linspace(0,1,11)
array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9,  1. ])
>>> np.linspace(0,1,10,endpoint=False)
array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9])

如果您真的想使用浮点步长值,可以 numpy.arange .

>>> import numpy as np
>>> np.arange(0.0, 1.0, 0.1)
array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9])

浮点舍入误差 不过,也会造成问题。这里有一个简单的例子,舍入误差会导致 arange 要在只应生成3个数字时生成length-4数组,请执行以下操作:

>>> numpy.arange(1, 1.3, 0.1)
array([1. , 1.1, 1.2, 1.3])