Python 列出2个负十进制数之间的所有数字
如何获得两个负十进制数之间的所有数字的列表 请注意,刻度可以是小数点后2位或5位,精度不超过3。(我不知道这件事是否属实) 对于给定的1个负小数和其他负小数: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
[-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
请注意,这两个数字的精度和比例可能不相等。我应该提一下。那样的话,你想用哪一步?