Python 列出2个负十进制数之间的所有数字

Python 列出2个负十进制数之间的所有数字,python,numpy,range,Python,Numpy,Range,如何获得两个负十进制数之间的所有数字的列表 请注意,刻度可以是小数点后2位或5位,精度不超过3。(我不知道这件事是否属实) 对于给定的1个负小数和其他负小数: [-0.05和-0.02]带步骤0.01 输出: [-0.04,-0.03] 或例如1个负小数和1个正小数: [-0.05和0.05]带步骤0.01 输出: [-0.04,-0.03,-0.02,-0.01,0.00,0.01,0.02,0.03,0.04,0.05] 试过)也用了负阶,但一无所获 我得到了奇怪的结果。这应该行得通 min

如何获得两个负十进制数之间的所有数字的列表

请注意,刻度可以是小数点后2位或5位,精度不超过3。(我不知道这件事是否属实)

对于给定的1个负小数和其他负小数:

[-0.05和-0.02]
带步骤
0.01

输出:

[-0.04,-0.03]

或例如1个负小数和1个正小数:

[-0.05和0.05]
带步骤
0.01

输出:

[-0.04,-0.03,-0.02,-0.01,0.00,0.01,0.02,0.03,0.04,0.05]

试过)也用了负阶,但一无所获

我得到了奇怪的结果。

这应该行得通

min_value = -0.05
max_value = 0.05
step = 0.01
output_list = [elem/100000.0 for elem in range(int(min_value*100000), int((max_value+step)*100000), int(step*100000))]
# outputs [-0.05, -0.04, -0.03, -0.02, -0.01, 0.0, 0.01, 0.02, 0.03, 0.04, 0.05]
说明:

range
适用于整数,您说过您想要的最大精度是3。因此,通过乘以1000(3个小数)并转换为
integer
,您可以使用该函数。剩下的就是将结果再除以1000,得到所需的比例


此外,由于范围函数不包括max_值,因此我添加了步骤来包括它,因此使用
(max_值+步骤)*1000
。你也可以用
min\u值
来排除它。

numpy.arange
有很好的结果
float
计算总是有很小的误差

import numpy as np

begin  = -0.05
finish = 0.05
step   = 0.01

np.set_printoptions(precision=3)
print(np.arange(begin+step, finish, step))
输出为:

[ -4.000e-02  -3.000e-02  -2.000e-02  -1.000e-02   6.939e-18   1.000e-02
   2.000e-02   3.000e-02   4.000e-02]
[-0.04, -0.030000000000000002]
其中
-4.000e-02
表示
-4)*10^(-2)
0.04
。而
6.939e-18
表示
6.939*10^(-18)
或几乎为零

还有另一种方法:

begin = -0.05
finish = -0.02
step = 0.01
l = [begin+(i+1)*step for i in range(round((finish-begin)/step)-1)]
print(l)
输出为:

[ -4.000e-02  -3.000e-02  -2.000e-02  -1.000e-02   6.939e-18   1.000e-02
   2.000e-02   3.000e-02   4.000e-02]
[-0.04, -0.030000000000000002]

使用
np.arange
,您的奇怪结果是什么?完成。更新了itThanks,但我得到了strage结果
min_value=-0.00015 max_value=0.05
请注意,这两个数字的精度和比例可能不相等。我应该提一下。那样的话,你想用哪一步?