为什么我在这里得到错误的精度?我问了三个小数点后的浮点数。

>>> from decimal import Decimal
>>> from decimal import getcontext

>>> getcontext().prec = 3
>>> Decimal(1.111) + Decimal(2.222)
Decimal('3.33') # Why not 3.333?

第二个问题,对于djangoDecimalField,我定义我的字段如下:
value = models.DecimalField(max_digits=10, decimal_places=3)

它的结果和设置的一样吗
getcontext().prec = 3

小数点?

最佳答案

prec设置充当max_digits设置,因此如果您尝试将200.222和300.333的小数相加,您将立即看到问题所在。要获得精确的小数点后3位,可以使用round()函数。
第一部分实际上回答了这个问题,但只是为了澄清:
round(Decimal(123.3334343), 3)设置逗号前后总共可以有多少个数字。
max_digits指定存储的小数位数。
因此,简短的回答是不:decimal_places!=getcontext().prec = 3

10-08 03:44