1

我希望0.5四舍五入1。任何人都可以解释为什么它会向下取0整吗?

>>> from decimal import *
>>> getcontext().prec = 0
>>> +Decimal(0.5)
Decimal('0')
4

5 回答 5

6

您要求零有效数字精度。如果您根本不允许存储任何数字,则所有数字都将为零。

请注意,精度是有效小数位数,即不计算前导零。 0.5有一个有效数字,1.5有两个。另请注意,Decimal使用银行家四舍五入

于 2012-02-24T16:09:05.573 回答
1

您将精度设置为 0,请尝试将其设置为 1 或 2。

于 2012-02-24T16:09:08.607 回答
1

我不确定这里的用例是什么,但为什么不这样做:

round(0.5)
于 2012-02-24T16:12:54.233 回答
0

如果你想要一个整数,我会转换为一个 int 。

 int(Decimal(0.5))

您还可以确保您具有正确的舍入设置。

 getcontext().prec = 0
 getcontext().rounding = ROUND_HALF_UP
于 2012-02-24T16:12:12.670 回答
0

在你的:

getcontext.prec()=0

行,您要求 0 位小数 - 所有小数都将返回 0 这种方式。尝试:

getcontext.prec()=1

或另一个数字来设置小数位数。

祝你好运。

于 2013-06-16T14:00:59.443 回答