(最終更新日:2023年6月)
✔対象となる読者
「Pythonで四捨五入をする方法が知りたい」
「Pythonでの四捨五入のコード例を見たい」
「Pythonで四捨五入を活用するアイデアが欲しい」
✔この記事でお伝えする内容
- Pythonにおける四捨五入の基本概念
- Pythonを用いた四捨五入の書き方とその応用
- Pythonで四捨五入を行う実例
当記事では、Pythonを使った四捨五入の基本から、さまざまな応用例まで、具体的なコードサンプルを交えて丁寧に解説していきます。
ぜひ最後までお読みください。
Pythonでの四捨五入とその特徴
Pythonで四捨五入をおこなうための前提知識を確認していきましょう。
四捨五入とは?Pythonのround関数とは?実例に進む前に知っておくべきことをご説明します。
- 四捨五入の基本概念
- Pythonのround()関数の特徴(偶数への丸め)
四捨五入の基本概念
四捨五入とは、ある数値を丸める際の手法のひとつです。
小数点以下の値が5以上の場合には繰り上げ、それ未満の場合には切り捨てるというものです。
これにより、計算結果を単純化しやすくなります。
Pythonのround()関数の特徴(偶数への丸め)
Pythonの組み込み関数であるround()は、四捨五入をおこなう関数です。
ただし通常の四捨五入とは異なり、.5の場合に最も近い偶数の方向に丸められます。
連続する数値を均等に丸めるためのルールであり、統計学ではバイアスを避けるために用いられます。
x = 3.5
rounded = round(x)
print(rounded) # 出力: 4
y = 2.5
rounded = round(y)
print(rounded) # 出力: 2
組み込み関数round()の使い方
- round()関数の基本形
- 小数・整数の任意の桁数での丸め(利用例と注意点)
round()関数の基本形
Pythonのround()関数の基本的な使い方は以下のとおりです。
# 小数点第一位を四捨五入
print(round(1.5)) # output: 2
print(round(2.5)) # output: 2
1.5
は2に丸められ、2.5
は偶数側の2に丸められます。
小数・整数の任意の桁数での丸め(利用例と注意点)
round()関数は、第二引数に桁数を指定することで、任意の桁数で丸められます。
ただし大きな桁数を指定した場合や、丸めた結果が表現可能な最も近い浮動小数点数となることに注意が必要です。
# 小数点第二位まで表示
print(round(1.456, 2)) # output: 1.46
Decimalモジュールを使った四捨五入
Decimalモジュールを使って、四捨五入も可能です。
round関数との違いを理解すれば、場面に合わせて使い分けられるでしょう。
- Decimalモジュールの概要
- Decimalオブジェクトの生成
- quantize()メソッドを使った四捨五入・偶数への丸め
- 任意の桁数での小数・整数の四捨五入
Decimalモジュールの概要
PythonのDecimalモジュールは、正確な10進数の計算を可能にするためのものです。
このモジジュールを使用することで、浮動小数点数に関連する丸め誤差を避けられるようになります。
from decimal import Decimal
x = Decimal('0.1')
y = Decimal('0.2')
result = x + y
print(result) # 出力: 0.3
Decimalオブジェクトの生成
Decimalモジュールを使用するには、まずDecimal
オブジェクトを生成します。
これは、Decimal
クラスのコンストラクタに数値を文字列として渡すことで可能です。
from decimal import Decimal
# Decimalオブジェクトの生成
d = Decimal('1.5')
print(d) # output: 1.5
quantize()メソッドを使った四捨五入・偶数への丸め
Decimal
オブジェクトのquantize()
メソッドで、任意の桁数での丸めが可能です。
from decimal import Decimal, ROUND_HALF_UP
# 小数点第二位まで四捨五入
d = Decimal('1.456')
rounded = d.quantize(Decimal('0.00'), rounding=ROUND_HALF_UP)
print(rounded) # output: 1.46
ここでは、ROUND_HALF_UP
を指定して通常の四捨五入を行っています。
任意の桁数での小数・整数の四捨五入
quantize()
メソッドを使えば、任意の桁数で四捨五入をおこなえます。
この方法は、大きな桁数の数値や精度が求められる計算で非常に有用です。
from decimal import Decimal, ROUND_HALF_UP
# 小数点第三位まで四捨五入
d = Decimal('1.4567')
rounded = d.quantize(Decimal('0.000'), rounding=ROUND_HALF_UP)
print(rounded) # output: 1.457
新たな関数を定義して四捨五入を行う方法
四捨五入を行うため、新たな関数を定義することも可能です。
場面に合わせて、オリジナルのアルゴリズムで構築できるのがメリットと言えるでしょう。
- カスタム関数の利点
- 小数・整数の任意の桁数で四捨五入する関数の作成
- 負の値の場合の四捨五入処理
カスタム関数の利点
Pythonの組み込み関数やDecimalモジュールだけでなく、自分で四捨五入の関数を作成することも可能です。
これにより、特定の条件に対する処理や複雑な丸め処理を簡単に実装することができます。
小数・整数の任意の桁数で四捨五入する関数の作成
以下に、小数・整数の任意の桁数で四捨五入をおこなうカスタム関数の例を示します。
def custom_round(value, digit):
p = 10 ** digit
return (value * p * 2 + 1) // 2 / p
print(custom_round(1.4567, 2)) # output: 1.46
負の値の場合の四捨五入処理
負の値についても同様に、四捨五入をおこなうことが可能です。
ただし負の値の場合、四捨五入のルールが少々複雑になることがあります。
カスタム関数を利用すれば、適切な処理を実装できるのです。
def custom_round(value, digit):
p = 10 ** digit
if value >= 0:
return (value * p * 2 + 1) // 2 / p
else:
return -(-value * p * 2 + 1) // 2 / p
print(custom_round(-1.4567, 2)) # output: -1.46
入力が負の値である場合には、値を正にして四捨五入を行った後、再び符号を反転させています。
これにより、負の値でも正確に四捨五入をおこなえるでしょう。
四捨五入の応用例
四捨五入の応用例を見ていきます。
手を動かしながら具体例を学んでいけば、身につくのが格段と早まるでしょう。
- データ処理などでの四捨五入の利用
- 金額計算での四捨五入の活用
データ処理などでの四捨五入の利用
四捨五入は、データ分析や機械学習の分野でも頻繁に使用されます。
たとえば、データをビンに分割する際や、統計的な指標を計算する際などに、四捨五入をおこなうことで計算結果を整理しやすくすることが可能です。
# データ分析における四捨五入の例
# データをビンに分割する場合の四捨五入
data = [12.3, 15.7, 18.2, 21.6, 24.9, 27.4, 30.8, 34.1, 37.6, 40.2]
# ビンの幅を指定
bin_width = 5
# ビンごとにデータを分類する
binned_data = []
for value in data:
bin_value = round(value / bin_width) * bin_width
binned_data.append(bin_value)
print(binned_data)
# 出力:[10, 15, 20, 20, 25, 30, 35, 35, 40, 40]
# 統計的な指標の計算における四捨五入
data = [4.567, 6.789, 9.123, 12.345, 15.678]
# 平均値の計算
average = round(sum(data) / len(data), 2) # 小数点以下2桁に丸める
# 標準偏差の計算
import statistics
std_deviation = round(statistics.stdev(data), 2) # 小数点以下2桁に丸める
print(average, std_deviation)
# 出力:9.1 4.5
金額計算での四捨五入の活用
金額計算では、小数点以下の値を持つことが適切でない場合が多いため、四捨五入を利用することで適切な金額を計算できます。
具体的には、税金の計算や割引率の適用など、小数点以下の値を含む計算結果を整数値に丸めるために使用できるのです。
# 金額計算における四捨五入の例
# 税金の計算
subtotal = 1234.56
tax_rate = 0.08
# 税込金額の計算
total = subtotal * (1 + tax_rate)
rounded_total = round(total)
print(rounded_total)
# 出力: 1334
# 割引率の適用
original_price = 5000
discount_rate = 0.15
# 割引後の価格の計算
discounted_price = original_price * (1 - discount_rate)
rounded_discounted_price = round(discounted_price)
print(rounded_discounted_price)
# 出力: 4250
まとめ
Pythonでは、組み込み関数やDecimalモジュール、または自作の関数を使用して四捨五入をおこなえます。
それぞれに特徴と利点があり、適切に使い分けることでさまざまな状況に対応することが可能です。
実際には、場面に応じて使い分けるのがベストプラクティスだと言えるでしょう。
手を動かしながら、それぞれの方法をマスターしていきましょう。
Pythonのint型やfloat型について詳しく学びたい方は以下も参考にしてください。
int型
float型