Python で数値を四捨五入する方法 (round() 関数と Decimal)
Python で浮動小数点数を丸める方法を学びます。 Banker の丸め、カスタムの小数精度、および表示用の浮動小数点の書式設定について理解します。
概要
コンピュータの浮動小数点演算は、バイナリ システムによる小数の格納方法が原因で、予期しない精度の問題を引き起こすことがあります (たとえば、「0.1 + 0.2」が「0.30000000000000004」と評価される)。ユーザーに数値を表示するとき、またはメトリクスを準備するときは、数値を四捨五入することが一般的な要件です。 Python には、これを実現するためのいくつかの方法が用意されています。
主なツールは、組み込みの `round(number, ndigits)` 関数です。数値とオプションの精度カウントを受け取ります。 `ndigitals` を省略すると、最も近い整数に丸められます。 `ndigitals` を指定すると、その小数点以下の桁数に丸められます。
Python の `round()` 関数の重要な特性は、「バンカーの丸め」(半分を偶数に丸める) を使用することです。数値が 2 つの整数のちょうど中間である場合 (例: `2.5` または `3.5`)、Python は最も近い *偶数* の数値に丸めます。これは、「round(2.5)」が「2」、「round(3.5)」が「4」であることを意味します。上方バイアスを防ぐために大規模なデータセットに対して数学的に公平である一方で、正確な財務計算を行うには、「10 進数」モジュールの量子化ツールを使用する必要があります。
コードと実行の出力
このスクリプトは、組み込みのround関数、Bankerの丸めの例、および10進数モジュールを使用した浮動小数点数の丸めを示します。
from decimal import Decimal, ROUND_HALF_UP
val = 3.14159
# 1. Round to nearest integer
print("Nearest Integer:", round(val))
# 2. Round to 2 decimal places
print("Two decimals:", round(val, 2))
# 3. Banker's Rounding demonstration (rounds to nearest even)
print("round(2.5):", round(2.5)) # Nearest even is 2
print("round(3.5):", round(3.5)) # Nearest even is 4
# 4. Math rounding up (Traditional rounding) using decimal module
amount = Decimal("2.5")
rounded_up = amount.quantize(Decimal("1"), rounding=ROUND_HALF_UP)
print("Decimal ROUND_HALF_UP (2.5):", rounded_up)Nearest Integer: 3
Two decimals: 3.14
round(2.5): 2
round(3.5): 4
Decimal ROUND_HALF_UP (2.5): 3段階的な実装
- 組み込みのround(number)関数を呼び出して、floatを最も近い整数に丸めます。
- 2 番目の引数 (例:round(num, 2)) を渡して、保持する小数点以下の桁数を指定します。
- 財務上の厳密な四捨五入計算には、ROUND_HALF_UP を備えた 10 進数モジュールを使用します。
よくある質問
Python でround(2.5) が 3 ではなく 2 を返すのはなぜですか?
Python は、半数値を最も近い偶数の整数に丸めるバンカーの丸めを使用します。これにより、統計的な偏りが軽減されます (半分の数値を切り上げると、大きなデータセットでは常にわずかな上方ドリフトが生じます)。
数値を常に切り上げる、または常に切り下げるにはどうすればよいですか?
math モジュールをインポートし、math.ceil(x) を使用して次の整数に切り上げるか、math.floor(x) を使用して前の整数に切り捨てます。
関連トピック
推奨される Python リソース
関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。
Python の変数とデータ型の説明
Python 変数と主要なデータ型 (文字列、整数、浮動小数点数、ブール値) を理解します。 Python でのメモリ割り当ての完全な初心者ガイド。
Python 辞書メソッドのチートシート
Python の辞書メソッドを学習します。キーと値のペアの挿入、取得、更新、チェックに関する完全なリファレンス ガイド。
Python と JavaScript: どちらのプログラミング言語が最適ですか?
Python と JavaScript の包括的な比較。構文の違い、パフォーマンス、使用例 (バックエンドとフロントエンド)、およびコーディング例を調べます。