我希望0.5
四舍五入1
。任何人都可以解释为什么它会向下取0
整吗?
>>> from decimal import *
>>> getcontext().prec = 0
>>> +Decimal(0.5)
Decimal('0')
我希望0.5
四舍五入1
。任何人都可以解释为什么它会向下取0
整吗?
>>> from decimal import *
>>> getcontext().prec = 0
>>> +Decimal(0.5)
Decimal('0')
您要求零有效数字精度。如果您根本不允许存储任何数字,则所有数字都将为零。
请注意,精度是有效小数位数,即不计算前导零。 0.5
有一个有效数字,1.5
有两个。另请注意,Decimal
使用银行家四舍五入。
您将精度设置为 0,请尝试将其设置为 1 或 2。
我不确定这里的用例是什么,但为什么不这样做:
round(0.5)
如果你想要一个整数,我会转换为一个 int 。
int(Decimal(0.5))
您还可以确保您具有正确的舍入设置。
getcontext().prec = 0
getcontext().rounding = ROUND_HALF_UP
在你的:
getcontext.prec()=0
行,您要求 0 位小数 - 所有小数都将返回 0 这种方式。尝试:
getcontext.prec()=1
或另一个数字来设置小数位数。
祝你好运。