Почему сообщается об ошибке, когда модуль превышает 1,0 e 18

#python #decimal

Вопрос:

Почему сообщается об ошибке, когда модуль превышает 1,0 e 18?

 from decimal import Decimal

M = 1.0e 18

print(M)

M = float(Decimal(M).quantize(Decimal("1E-10"),rounding="ROUND_HALF_UP"))

print(M)
 

Ошибка:

 InvalidOperation: [<class 'decimal.InvalidOperation'>]
 

Комментарии:

1. но, если значение меньше или равно 1,0 e 17, его можно передать

Ответ №1:

В отличие от других операций, если длина коэффициента после операции квантования будет больше точности, то будет подан сигнал о недопустимости операции. Это гарантирует, что, если нет условия ошибки, квантованный показатель всегда равен показателю правого операнда.

Также, в отличие от других операций, квантование никогда не сигнализирует о недостаточном потоке, даже если результат является ненормальным и неточным.

Если показатель второго операнда больше, чем у первого, то может потребоваться округление. В этом случае режим округления определяется аргументом округления, если задан, иначе заданным аргументом контекста; если ни один из аргументов не задан, используется режим округления контекста текущего потока.