Python round()関数を実例で徹底解説
Python round()関数を実例で徹底解説
round()組み込み関数はPythonでの数値処理の定番です。指定した桁数で丸めた値を返し、精度を指定しない場合は最も近い整数を返します。
構文
round(number, ndigits=None)
- number – 丸める数値
- ndigits – オプション;保持する小数点以下の桁数。省略時は整数を返す。
戻り値
ndigitsを省略するとround()はintを返します。ndigitsを指定すると、その精度で丸めたfloatを返します。
丸めルール
- 対象桁の次の桁が5以上なら切り上げ
- 5未満なら指定精度で切り捨て
丸めが重要な理由:実例
金融市場では丸めが数百万ドルの取引に影響します。例えば、1982年のバンクーバー証券取引所では取引価格を小数点以下3桁で切り捨てていたため、月間で約25ポイントの累積損失が発生しました。切り捨てではなく丸めを使えば、はるかに正確な結果が得られます。
# 例: 切り捨て vs 丸め
import random
def truncate(num):
return int(num * 1000) / 1000
arr = [random.uniform(0.01, 0.05) for _ in range(1_000_000)]
# 切り捨て
sum_truncate = 0
for val in arr:
sum_truncate = truncate(sum_truncate + val)
# 丸め
sum_round = 0
for val in arr:
sum_round = round(sum_round + val, 3)
print("切り捨て合計:", sum_truncate)
print("丸め合計:", sum_round)
切り捨て合計は数百単位でずれる可能性がありますが、丸めでは数分の1単位のずれに抑えられます。
よくあるユースケース
浮動小数点数の丸め
# 基本的な丸め print(round(10.60)) # 11 print(round(10.40)) # 10 print(round(10.3456, 2)) # 10.35 print(round(10.3445, 2)) # 10.34
整数の丸め
print(round(15)) # 15
負の数の丸め
print(round(-2.8)) # -3 print(round(-1.5)) # -2
NumPy配列の丸め
import numpy as np arr = [-0.341111, 1.455098989, 4.232323, -0.3432326, 7.626632, 5.122323] print(np.round(arr, 2)) # [-0.34 1.46 4.23 -0.34 7.63 5.12]
decimalモジュールによる精密制御
decimalモジュールは丸めモードを細かく制御できます。
import decimal
num = decimal.Decimal('15.456')
print(num.quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_UP)) # 15.46
重要なポイント
- 標準的な丸めには
round(number, ndigits)を使用 ndigits省略時は整数、指定時は浮動小数点数を返す- 重要な金融・科学計算では、決定論的な丸めのために
decimalを検討
Python
- C++演算子オーバーロード:コード例付き実践ガイド
- C++関数を実例で徹底解説:基本から応用まで
- Python ラムダ関数: 無名関数の実践ガイド
- Pythonジェネレータ:効率的イテレーションと高度なユースケース
- Pythonクロージャ解説:ネスト関数が変数を捕捉する仕組み
- Pythonデコレータマスター:エキスパート技法で関数を拡張
- Python print()関数の実践ガイド:基本から応用まで
- Python strip()メソッド完全ガイド:実践例付き
- Python str.count()マスター:文字と部分文字列のカウント実例集
- Python format()文字列を明確な例でマスター
- Python String.find()メソッド完全ガイド:構文、例、代替手法