#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:
В отличие от других операций, если длина коэффициента после операции квантования будет больше точности, то будет подан сигнал о недопустимости операции. Это гарантирует, что, если нет условия ошибки, квантованный показатель всегда равен показателю правого операнда.
Также, в отличие от других операций, квантование никогда не сигнализирует о недостаточном потоке, даже если результат является ненормальным и неточным.
Если показатель второго операнда больше, чем у первого, то может потребоваться округление. В этом случае режим округления определяется аргументом округления, если задан, иначе заданным аргументом контекста; если ни один из аргументов не задан, используется режим округления контекста текущего потока.