Прямое преобразование из float в Decimal было реализовано в 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 и новее?)