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 進数の変換のサンプル