1

0.5に切り上げる予定1です。0代わりに切り捨てられる理由を誰か説明できますか?

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

5 に答える 5

6

有効数字0桁の精度を要求しました。数字の保存をまったく許可しない場合、すべての数字はゼロになります。

精度は小数点以下の桁数であることに注意してくださいつまり、先行ゼロはカウントされません。 0.5有効数字は1桁、有効数字1.5は2桁です。また、銀行家の丸め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

あなたの中で:

getcontext.prec()=0

行、小数点以下 0 桁を要求しています - すべての小数点以下はこのように 0 を返します。試す:

getcontext.prec()=1

または、小数点以下の桁数を設定する別の数値。

幸運を。

于 2013-06-16T14:00:59.443 に答える
0

整数が必要な場合は、intに変換します。

 int(Decimal(0.5))

丸め設定が正しいことを確認することもできます。

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