Python round() の使い方と注意点2つ

Python round()関数は、小数点以下の桁数を丸める際に便利に使用されます。プログラミングをしていると、浮動小数点型(float)のデータを処理する状況がよくあります。これをよりスマートに処理するためには、round()関数を知っておくことが重要です。この記事では、Pythonのround()関数の使い方を説明し、注意点と活用方法についても解説します。

Python round() 関数とは?

Pythonのround()関数は、浮動小数点型(float)値を丸めて、整数型(int)値または指定された小数点以下の桁数を返す関数です。浮動小数点だけでなく、整数も丸めることができます。例えば、3.14159を小数点以下2桁で丸めたり、4.5を整数の5に変換したり、12345を12300に丸めるといった用途にも使われます。基本的な構文は以下の通りです。

Python
round(number, ndigits)
  • number: 丸めたい浮動小数点型の値です。
  • ndigits: 小数点以下の何桁で丸めるかを指定します。この値を省略すると、デフォルトで0が適用され、整数として返されます。

round() 基本使い方

round()関数の最も基本的な使い方は、小数点以下の値を丸めることです。例えば、小数点以下をすべて取り除いて整数に変換するには、round()関数を使用します。

Python
result = round(4.5)
print(result)

result = round(4.6)
print(result)

上記のコードを実行すると、図1 のように、4.5は丸められて4が出力され、4.6は丸められて5が出力されます。

図1. Python round() 関数での丸め処理
図1. Python round() 関数での丸め処理

ここで分かるように、round()関数は小数点以下第1位を基準に丸め処理を行います。通常、.5から1に繰り上げられると考えがちですが、4.5が丸められて4が出力されることに驚く方もいるかもしれません。これは「銀行家の丸め」という方法で、次のセクションで説明します。

ndigits 使用

round()関数にndigitsパラメータを使用すると、小数点以下の何桁まで保持するかを指定できます。

Python
result = round(3.14159, 2)
print(result)

この例では、3.14159という値が小数点以下2桁で丸められ、3.14として出力されます。ndigitsが2であるため、小数点以下2桁までが保持されます。

図2. Python round() 関数で小数点以下2桁まで丸める
図2. Python round() 関数で小数点以下2桁まで丸める

round() 関数の注意点

銀行家の丸め (Banker’s rounding)

Pythonのround()関数は、単純な数学的丸めルールではなく、「銀行家の丸め」方式を採用しています。これは、正確に0.5の値がある場合、最も近い偶数に丸める方法です。

Python
print(round(2.5))
print(round(3.5))

上記のコードで示すように、2.5は3ではなく2に丸められ、3.5は4に丸められます。これは、金融計算で小数点以下の桁をより正確に処理するための方法です。そのため、他の言語での丸め方式と異なる場合があるので注意が必要です。

図3. Python round() 関数では銀行家の丸めを使用
図3. Python round() 関数では銀行家の丸めを使用

ndigits の負の値: 整数の桁で丸める

ndigitsに負の値を指定すると、小数点ではなく整数の桁で丸めが行われます。

Python
print(round(123456, -1))
print(round(123456, -2))
print(round(123456, -3))

この場合、-1は10の位、-2は100の位、-3は1000の位で丸められます。これにより、大きな数値を簡単に丸めて処理できます。

그림 4. 파이썬 round() 함수로 정수의 반올림
그림 4. 파이썬 round() 함수로 정수의 반올림

図4. Python round() 関数で整数の丸め処理

活用方法

金額計算での有用な活用

round()関数は、特に金額計算で小数点以下を整理する際に頻繁に使用されます。例えば、決済金額を小数点なしで丸めたり、特定の桁数まで残して表示したりする場合に便利です。

Python
price = 19.995
final_price = round(price, 2)
print(final_price)

このように、金額計算時にround()関数を有効に活用できます。

図5. Python round() 関数での金額計算での活用
図5. Python round() 関数での金額計算での活用

グラフィックプログラムでの活用

ゲーム開発やグラフィックプログラミングで、座標値が浮動小数点型の場合、丸めて座標を整数に変換し、ピクセル単位で処理する際にもround()関数が使用されます。

Python
x, y = 3.6, 4.2
x, y = round(x), round(y)
print(x, y)

このように、座標値を整数に丸めて処理することで、グラフィックやUI要素の配置において不要な誤差が減少し、処理速度も向上します。

図6. Python round() 関数でグラフィックプログラムの活用
図6. Python round() 関数でグラフィックプログラムの活用

注意事項のまとめ

  • round()関数は、Pythonの基本的な丸め関数で、小数点以下の桁数を丸めることができます。
  • 正確に0.5の値を丸める際には、銀行家の丸めが使用され、最も近い偶数に丸められる点を覚えておく必要があります。
  • ndigitsに負の値を指定すると、整数の桁で丸め処理が行われます。

まとめ

Pythonのround()関数は、小数点以下の桁を簡単に丸めることができる便利なツールです。基本的な使い方から整数の桁での丸め、そして銀行家の丸め方式まで理解すれば、浮動小数点データをより正確かつ効率的に処理することができます。特に、金額計算やグラフィックプログラムでの座標処理に有効に活用できるため、実務でも頻繁に使用されるでしょう。

今後、Pythonを使ってより複雑な計算が必要な場合は、round()関数を適切に活用して、正確でスムーズな結果を得てください。

リファレンス

関連ポスト

コメントする