Python cdecimal InvalidOperation

Я пытаюсь прочитать финансовые данные и сохранить их. Место, откуда я получаю финансовые данные, хранит данные с невероятной точностью, однако меня интересуют только 5 цифр после запятой. Поэтому я решил использовать t = .quantize(cdecimal.Decimal('.00001'), rounding=cdecimal.ROUND_UP) для десятичного числа, которое я создаю, но я продолжаю получать исключение InvalidOperation. Почему это?

>>> import cdecimal
>>> c = cdecimal.getcontext()
>>> c.prec = 5
>>> s = '45.2091000080109'
>>> # s = '0.257585003972054' works!
>>> t = cdecimal.Decimal(s).quantize(cdecimal.Decimal('.00001'), rounding=cdecimal.ROUND_UP)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  cdecimal.InvalidOperation: [<class 'cdecimal.InvalidOperation'>]

Почему здесь недопустимая операция? Если я изменю точность на 7 (или выше), это сработает. Если я установлю s равным «0,257585003972054» вместо исходного значения, это также сработает! Что здесь происходит?

Спасибо!

9
задан user1094786 10 March 2012 в 17:45
поделиться