Pythonのデシマル – 除算、四捨五入、精度

Pythonのdecimalモジュールは、数字の正確な精度と丸め方を考慮した除算をサポートしています。

Pythonのdecimalモジュール

python decimal, python division, python rounding

小数点を使った数字との作業

十進数は、小数点以下の桁数が固定された浮動小数点数です。必要に応じて適切に数値を四捨五入しなければならず、さもなくば結果は予期せぬものになるかもしれません。Pythonのdecimalモジュールは、十進数をより正確に取り扱うのに役立ちます。

小数モジュールの必要性 (Shōsū mojūru no hitsuyōsei)

このモジュールを実際に利用する前に、どの程度の精度が必要であるかを確認し、なぜこのモジュールが必要なのかを確立しましょう。以下のコードスニペットを見てみましょう。

division = 72 / 7
print(division)
python decimal division

デシマルモジュールを使用する。

この投稿で私たちが作成するすべてのプログラムにおいて、私たちはすべてのプログラムでdecimalモジュールをインポートすることになります。

import decimal

こちらのモジュールから特定の機能のみをインポートする場合もあります。次のように行うことができます。

from decimal import Decimal

いくつかのプログラムに10進モジュールを導入しましょう。

Pythonのdecimalモジュールの例です。

今から、モジュールに関連する例から始めます。 (Ima kara, mojūru ni kanren suru rei kara hajimemasu.)

小数点付きの割り算を修正する。

ここでは、浮動小数点の結果を出力するべき除算を実行するために、上記で書いたプログラムを修正します。小数モジュールを使用した修正済みのプログラムは以下のようになります。

import decimal

division = decimal.Decimal(72) / decimal.Decimal(7)
print(division)
python division of decimal numbers

単一操作の精密制御

前のプログラムでは、答えには25桁の小数点がありましたが、もし小数の値を3桁までしか表示したくない場合はどうでしょうか?これも制御することができます。ここでは、答えの精度を制御し、他の操作には反映されません。

import decimal

with decimal.localcontext() as ctx:
    ctx.prec = 3
    division = decimal.Decimal(72) / decimal.Decimal(7)
    print(division)

again = decimal.Decimal(72) / decimal.Decimal(7)
print(again)
python decimal precision

完全なプログラムにおける制御の精度

プログラム全体で精度を制御することも可能です。ただし、プログラム内でたくさんの数値を扱う場合には常に推奨されません。以下に例を示します:

import decimal

decimal.getcontext().prec = 3

division = decimal.Decimal(72) / decimal.Decimal(7)
print(division)

again = decimal.Decimal(72) / decimal.Decimal(7)
print(again)
python decimal global precision

数字を四捨五入する

ラウンド(…)関数を使用して、数字を優美に丸めることができます。やってみましょう。

import decimal

#Can be rounded to 13.48 or 13.49
rounded = round(13.485, 2)
print(rounded)
python rounding
import decimal

#Can be rounded to 13.48 or 13.49
rounded = round(13.485, 2)
print(decimal.Decimal(rounded).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_UP))

PythonのDecimalコンテキストを取得する

もしデフォルトのコンテキストをデフォルトで設定されたdecimalモジュールを見たい場合、以下のスクリプトを使用できます。

from decimal import *
print(getcontext())
python decimal context
コメントを残す 0

Your email address will not be published. Required fields are marked *