2017-09-14 22 views
-1

如何獲取2個負數小數之間的所有數字列表。列出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我得到了奇怪的結果。

+2

你*奇怪的結果*使用'np.arange'什麼人? –

回答

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來排除它。

+0

不能使用5位小數 – mwweb

+0

對不起,我看錯了。讓我更新我的答案,所以它會。 –

+0

完成。更新它 –

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] 
相關問題