十进制 Python 库有奇怪的行为

Decimal Python Library has weird behavior

提问人:João Gabriel Paina 提问时间:9/16/2022 最后编辑:ShadowRangerJoão Gabriel Paina 更新时间:9/16/2022 访问量:51

问:

我正在尝试使用 Python Decimal 修复我的所有计算。我将小数点后位数限制为 3,但是,我得到了这种行为:

from decimal import *
getcontext().prec = 3

In [0]:Decimal('32.983') - Decimal('0.000')
Out[1]: Decimal('33.0')

有谁知道如何克服它?我想得到:

Out[1]: Decimal('32.983')

python-3.x 精度 python-decimal

评论


答:

1赞 rici 9/16/2022 #1

如果要获得 ,则需要将精度设置为 5,而不是 3。精度是有效位数的计数,而不是小数点后的数字计数。32.983

通常不应对中间计算的精度进行严格限制,因为这会影响最终结果的准确性。您始终可以对最终结果进行四舍五入以进行显示。