我正试着阅读和存储财务数据。我从那里得到的财务数据以难以置信的精度存储数据,但我只对小数点后5位数感兴趣。因此,我决定对创建的十进制使用t=.quantize(cdecimal.Decimal('.00001'),rounding=cdecimal.ROUND_UP),但我一直收到invalidooperation异常。这是为什么?
>>> 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.2575850003972054”,而不是原始值,那么也可以!怎么回事?
谢谢!
十进制版本可以更好地描述错误:
Docs:
但我必须承认我不知道这意味着什么。
相关问题 更多 >
编程相关推荐