преобразование из float в Decimal в python-2.6: как это сделать и почему они этого не сделали

Прямое преобразование из числа с плавающей запятой в десятичное было реализовано в 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 и новее?)

14
задан mskfisher 16 May 2012 в 13:05
поделиться