Python 四捨五入/切り上げ/切り捨てのサンプル

Pythonの四捨五入と切り上げと切り捨てのサンプルです。

確認環境
・Python 3.7.2

目次

サンプル 四捨五入(round)
  Round関数での四捨五入は銀行丸め
  切り上げ(math.ceil)
  切り捨て(math.floor)

四捨五入(quantize)

四捨五入のサンプルです。
quantize関数を使用します。

# coding: utf-8
from decimal import Decimal, ROUND_HALF_UP

a1 = Decimal(str(2.5))
print(a1.quantize(Decimal('0'), rounding=ROUND_HALF_UP)) #3が表示される

a2 = Decimal(str(2.26))
print(a2.quantize(Decimal('0'), rounding=ROUND_HALF_UP)) #2が表示される
print(a2.quantize(Decimal('0.1'), rounding=ROUND_HALF_UP)) #2.3が表示される

a3 = Decimal(str(2.82))
print(a3.quantize(Decimal('0'), rounding=ROUND_HALF_UP)) #3が表示される
print(a3.quantize(Decimal('0.1'), rounding=ROUND_HALF_UP)) #2.8が表示される

2行目は、decimalパッケージから、DecimalとROUND_HALF_UPをインポートしています。
4行目は、対象の値を文字列型にしています。
5行目は、小数第一位で四捨五入を行っています。
9,13行目は、小数第二位で四捨五入を行っています。その場合、Decimalの引数を'0.1'とします。
小数第三位を四捨五入する場合は、'0.01'とします。

Round関数での四捨五入は銀行丸め

Round関数も四捨五入できますが、銀行丸めになるので注意が必要です。
銀行丸めは、端数が0.5で、整数の箇所が偶数の場合は、ゼロへ丸めます。

# coding: utf-8
from decimal import Decimal, ROUND_HALF_UP

print(round(2.5)) #2が表示される
print(round(3.5)) #4が表示される

b1 = Decimal(str(2.5))
print(b1.quantize(Decimal('0'), rounding=ROUND_HALF_UP)) #3が表示される

4行目は、round関数です。端数が0.5で整数の箇所が偶数なのでゼロへの丸めになります。
5行目もround関数で端数が0.5ですが、整数の箇所が奇数なので通常の四捨五入になります。
8行目は、quantizeメソッドです。通常の四捨五入です。

切り上げ(math.ceil)

切り上げのサンプルです。

# coding: utf-8
import math

a = 2.26
print(math.ceil(a)) #3 

b = 2.82
print(math.ceil(b)) #3 

2行目は、mathモジュールをインポートしています。
math.ceilメソッドは、切り上げを行います。

以下は、Python公式の数学関数のmathモジュールのリンクです。
https://docs.python.jp/3/library/math.html

切り捨て(math.floor)

切り捨てのサンプルです。

# coding: utf-8
import math

a = 2.26
print(math.floor(a)) #2

b = 2.82
print(math.floor(b)) #2

2行目は、mathモジュールをインポートしています。
math.floorメソッドは、切り捨てを行います。

以下は、Python公式の数学関数のmathモジュールのリンクです。
https://docs.python.jp/3/library/math.html

関連の記事

Python 計算のサンプル(演算/代入演算子)
Python 数値と文字列の変換のサンプル
Python 進数の変換のサンプル

△上に戻る