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桁の精度を要求しました。数字の保存をまったく許可しない場合、すべての数字はゼロになります。
精度は小数点以下の桁数であることに注意してください。つまり、先行ゼロはカウントされません。 0.5
有効数字は1桁、有効数字1.5
は2桁です。また、銀行家の丸めDecimal
を使用していることに注意してください。
精度を0に設定しているので、代わりに1または2に設定してみてください。
ここでのユースケースが何であるかはわかりませんが、そうしないのはなぜですか:
round(0.5)
あなたの中で:
getcontext.prec()=0
行、小数点以下 0 桁を要求しています - すべての小数点以下はこのように 0 を返します。試す:
getcontext.prec()=1
または、小数点以下の桁数を設定する別の数値。
幸運を。
整数が必要な場合は、intに変換します。
int(Decimal(0.5))
丸め設定が正しいことを確認することもできます。
getcontext().prec = 0
getcontext().rounding = ROUND_HALF_UP