如何获取2个负十进制数之间的所有数字列表。
请注意,比例可能是2或5位小数,精度不超过3.(我不知道是否有此事)
对于给定的1个负十进制和其他负十进制:
步骤[-0.05 and -0.02 ]
0.01
输出:
[-0.04,-0.03]
或者例如1个负十进制和1个正十进制:
步骤[-0.05 and 0.05 ]
0.01
输出:
[-0.04,-0.03,-0.02,-0.01,0.00,0.01,0.02,0.03,0.04,0.05]
尝试range()和xrange()采取消极步骤,什么也没得到。
numpy.arange我得到了奇怪的结果。
答案 0 :(得分:2)
这应该有用。
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_value,因此我添加了包含它的步骤,因此使用(max_value+step)*1000
。您可以使用min_value
执行相同操作以排除它。
答案 1 :(得分:1)
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]
其中-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)
输出结果为:
[-0.04, -0.030000000000000002]