Decimal インスタンスの上限を取得する最も直接的な方法x
は、 を使用することx.to_integral_exact(rounding=ROUND_CEILING)
です。ここで文脈をいじる必要はありません。Inexact
これにより、必要に応じてフラグとRounded
フラグが設定されることに注意してください。フラグに触れたくない場合は、x.to_integral_value(rounding=ROUND_CEILING)
代わりに使用してください。例:
>>> from decimal import Decimal, ROUND_CEILING
>>> x = Decimal('-123.456')
>>> x.to_integral_exact(rounding=ROUND_CEILING)
Decimal('-123')
ほとんどの Decimal メソッドとは異なり、メソッドto_integral_exact
とto_integral_value
メソッドは現在のコンテキストの精度の影響を受けないため、精度の変更について心配する必要はありません。
>>> from decimal import getcontext
>>> getcontext().prec = 2
>>> x.to_integral_exact(rounding=ROUND_CEILING)
Decimal('-123')
ちなみに、Python 3.x では、インスタンスではなく をmath.ceil
返すことを除いて、希望どおりに動作します。これは、Python 3 のカスタム型に対してオーバーロード可能であるため機能します。Python 2 では、インスタンスを最初の型に変換するだけで、プロセスで情報が失われる可能性があるため、誤った結果になる可能性があります。int
Decimal
math.ceil
math.ceil
Decimal
float