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