Python Decimal не поддерживает построение из float; он ожидает, что вам нужно сначала преобразовать float в строку.
Это очень неудобно, поскольку стандартные форматирования строк для float требуют, чтобы вы указывали число десятичных знаков, а не значительных мест. Поэтому, если у вас есть число, которое может содержать до 15 знаков после запятой, вам нужно отформатировать как десятичный ( "%. 15f" % my_float), что даст вам мусор в 15-м десятичном разряде, если у вас также есть какие-либо значащие цифры перед десятичное.
Может ли кто-нибудь предложить хороший способ конвертировать из float в значение сохранения десятичного значения, как только пользователь ввел, возможно, ограничение числа значимых цифр, которые могут поддерживаться?