2015-09-26 55 views
0

我想創建一個列表,如這一個在Python:創建Python列表0.1間距

[0., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.] 

但是,當我用這個方法:

z = [x * 0.1 for x in range(0, 11)] 

我得到這樣的輸出:

[0.0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1.0] 

如何在沒有這些錯誤的情況下創建我想要的列表?

+0

或許,這可能會有幫助:http://stackoverflow.com/questions/477486/python-decimal-range-step-value – ozgur

+1

你會得到'[x /範圍(11)]中的[x/10.0]'稍微好一些。但真正的答案是另一個問題:你爲什麼關心這些微小的錯誤? –

回答

0

這些錯誤是二進制浮點數的生命事實。您可以強制Python中使用十進制算法與decimal模塊:

import decimal 
z = [decimal.Decimal(i)/decimal.Decimal(10) for i in range(0, 11)]