Прямое преобразование из числа с плавающей запятой в десятичное было реализовано в python-2.7, как в конструкторе Decimal, так и с помощью метода класса Decimal.from_float ().
Python-2.6 вместо этого выдает ошибку TypeError, предлагая сначала преобразовать в строку:
TypeError: Cannot convert float to Decimal. First convert the float to a string
поэтому мой обычный обходной путь таков:
if sys.version_info < (2, 7):
Decimal.from_float = classmethod(lambda cls, x: cls(str(x)))
Это просто литературный перевод сообщения об ошибке - и я просто не утруждаюсь его реализацией в конструктор тоже.
Если это так просто, почему они не реализовали это в первую очередь вместо того, чтобы сказать пользователю сделать это с помощью TypeError? Это лучший доступный метод (и, как следствие, тот, который используется в python-2.7 и новее?)