Pythonで四捨五入する方法 - round関数とdecimalモジュールを使った方法
プログラミング
公開日:
ブックマーク
実践的なコードを書いていると、意外と四捨五入をする必要があるケースが発生します。本記事では、Pythonで数値を四捨五入するための方法について、round関数とdecimalモジュールを使って、初心者向けに解説します。
はじめに
実践的なコードを書いていると、意外と四捨五入をする必要があるケースが発生します。
本記事では、Pythonで数値を四捨五入するための方法について、round関数とdecimalモジュールを使って、初心者向けに解説します。
基本的な四捨五入
Pythonで四捨五入を行う最も基本的な方法は、組み込み関数のround()を使用することです。
この関数は、数値を指定された小数点以下の桁数に四捨五入します。
round(数値, 桁数)
- 数値: 四捨五入したい数値を指定します。
- 桁数: 四捨五入後の小数点以下の桁数を指定します。省略した場合は整数に丸められます。
基本的な使い方は以下の通りです。
num = 3.14159
# 桁数を指定しない
rounded_num = round(num)
print(rounded_num) # 出力:3
# 小数点以下1桁に四捨五入
rounded_num = round(num, 1)
print(rounded_num) # 出力:3.1
# 小数点以下2桁に四捨五入
rounded_num = round(num, 2)
print(rounded_num) # 出力:3.14
負の桁数を指定して四捨五入
round()関数では、負の桁数を指定することで整数部分を四捨五入することもできます。
これにより、特定の桁で切り捨てることが可能です。
num = 357
# -1を指定すると、十の位で四捨五入
rounded_num = round(num, -1)
print(rounded_num) # 出力:360
# -2を指定すると、百の位で四捨五入
rounded_num = round(num, -2)
print(rounded_num) # 出力:400
round関数の注意点
通常、四捨五入のルールは「5以上なら切り上げ、4以下なら切り捨て」とされています。
round()関数もほぼこのルールに従って四捨五入が行われますが、偶数丸めによって処理を行います。
(対象の値がちょうど5となる場合は、結果が偶数となるように丸められます)
具体例を見てましょう。
print(round(0.5))
print(round(1.5))
print(round(2.5))
print(round(3.5))
print(round(4.5))
print(round(5.5))
実行結果はこのようになります。
0
2
2
4
4
6
decimalモジュールを使った四捨五入
round()関数は非常に簡単に使えますが、浮動小数点数の精度に起因する誤差が発生する可能性があります。
より正確な四捨五入を行う必要がある場合は、decimalモジュールを使用します。
decimalモジュールを使うことで10進演算を正確に行うことが可能になり、より正確な四捨五入を行うことができます。
では早速具体例を見てみましょう。
from decimal import Decimal, ROUND_HALF_UP
# Decimalオブジェクトの作成
num = Decimal('3.141592')
# ROUND_HALF_UPで通常の四捨五入
rounded_num = num.quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
print(rounded_num) # 出力: 3.14
- quantize()メソッド:指定した桁数で四捨五入を行う
- roundingパラメータ:丸め方を指定できます。ROUND_HALF_UPは通常の四捨五入、つまり5以上は切り上げる。
最後に
いかがでしたでしょうか?
冒頭にも記載した通り、四捨五入を行う機会は意外に多いです。
ぜひこの記事を参考にして、Pythonにおける四捨五入の方法をマスターしていきましょう。