Нет, это не дубликат, и ссылка выше - именно то, что я имел в виду, как неправильный ответ. Эта ссылка, и мой пост здесь специально спрашивают о создании десятичного списка. Но «ответ» создает список с плавающей точкой.
Правильный ответ - использовать десятичные параметры с np.arange, как в
`x_values = np.arange (десятичное число (-2,0), десятичное число (2,0), десятичное число (0,1)) Спасибо https://stackoverflow.com/users/2084384/boargules
Я полагаю, что на это можно ответить в другом месте, но ответы, которые я нашел, кажутся неправильными. Я хочу список десятичных знаков (точность = 1 десятичного знака) от -2 до 2.
-2, -1,9, -1,8 ... 1,8, 1,9, 2,0
Когда я делаю:
import numpy as np
x_values = np.arange(-2,2,0.1)
x_values
Я получаю:
array([ -2.00000000e+00, -1.90000000e+00, -1.80000000e+00, ...
Я пытался:
from decimal import getcontext, Decimal
getcontext().prec = 2
x_values = [x for x in np.around(np.arange(-2, 2, .1), 2)]
x_values2 = [Decimal(x) for x in x_values]
x_values2
Я получаю:
[Decimal('-2'),
Decimal('-1.899999999999999911182158029987476766109466552734375'),
Decimal('-1.8000000000000000444089209850062616169452667236328125'), ...
Я использую 3.6.3 в ноутбуке Jupyter.
Обновление: я изменил диапазоны от 2 до 2,0. Это улучшило результат, но я все еще получаю ошибку округления:
import numpy as np
x_values = np.arange(-2.0, 2.0, 0.1)
x_values
Который производит:
-2.00000000e+00, -1.90000000e+00, -1.80000000e+00, ...
1.00000000e-01, 1.77635684e-15, 1.00000000e-01, ...
1.80000000e+00, 1.90000000e+00
Примечание 1.77635684e-15 может быть невероятно малым числом, но оно НЕ равно нулю. Проверка на ноль не удастся. Поэтому вывод неправильный.
Мой ответ на дублирующее утверждение. Как вы можете видеть из моих результатов, ответ на Как использовать значение шага в десятичном диапазоне ()? не дает тех же результатов, которые я вижу с другим диапазоном. В частности, числа с плавающей запятой все еще возвращаются и не округляются, и 1.77635684e-15 не равно нулю.