Я имею дело с ошибкой, когда применение функции str
к экземпляру decimal.Decimal
дает мне строку '0E-1000'
. Я ожидал, что str
, примененный к Decimal
, всегда будет давать мне строку в форме -?[0-9]+(\.[0-9]+)
, что мне и нужно.
Во-первых, если я правильно понимаю, научная запись '0E-1000'
представляет собой 0 x 10^-1000, то есть ноль. Почему я получаю именно это представление нуля? Почему не '0E-42'
, что то же самое?
Во-вторых, я не могу вручную создать Decimal
, воспроизводящий эту ошибку. Экземпляр с ошибками Decimal
поступает из внешнего источника. Выражение str(Decimal(0))
оценивается как '0'
в REPL. Как я могу создать экземпляр d
из Decimal
, для которого str(d)
оценивается как '0E-1000'
?
РЕДАКТИРОВАТЬ: В-третьих, как я могу преобразовать произвольный экземпляр Decimal
в строку, как вы знаете, в десятичной нотации?
models.DecimalField(max_digits=1000, decimal_places=1000, blank=True, null=True)
. - person jameshfisher   schedule 13.02.2015