Pythonで数値を丸める方法
Min-jun Kim
Dev Intern · Leapcell

Key Takeaways
- Pythonの組み込み関数
round()
は、「round half to even」戦略を使用します。 - 常に切り上げまたは切り下げを行うには、
math.ceil()
またはmath.floor()
を使用します。 decimal
モジュールは、金融のユースケースに対する正確な丸めを提供します。
数値を丸めることは、特に浮動小数点演算、財務計算、またはデータ表示を扱う場合に、プログラミングにおける基本的な操作です。Pythonには、数値を丸めるためのいくつかのメソッドがあり、それぞれ異なるシナリオに適しています。この記事では、組み込みのround()
関数、math
モジュール、decimal
モジュールなど、Pythonのさまざまな丸め手法について説明します。
組み込み関数round()
Pythonの組み込み関数round()
は、数値を丸める最も簡単な方法です。
構文
round(number, ndigits)
number
: 丸めたい数値。ndigits
(省略可能): 丸める小数点以下の桁数。省略した場合、数値は最も近い整数に丸められます。
例
round(3.14159) # 出力: 3 round(3.14159, 2) # 出力: 3.14 round(2.5) # 出力: 2 round(3.5) # 出力: 4
注記: Pythonは、デフォルトの丸め戦略として「round half to even」(「bankers' rounding」とも呼ばれます)を使用します。これは、2つの整数のちょうど中間の数値は、最も近い偶数の整数に丸められることを意味します。たとえば、round(2.5)
は2
を返し、round(3.5)
は4
を返します。
math
モジュールを使用した切り上げと切り下げ
丸めをより細かく制御したい場合、特に常に切り上げまたは切り下げが必要な場合は、Pythonのmath
モジュールにceil()
関数とfloor()
関数が用意されています。
math.ceil()
を使用した切り上げ
import math math.ceil(3.2) # 出力: 4 math.ceil(-3.2) # 出力: -3
math.ceil()
は、指定された数値以上の最小の整数を返します。
math.floor()
を使用した切り下げ
import math math.floor(3.8) # 出力: 3 math.floor(-3.8) # 出力: -4
math.floor()
は、指定された数値以下の最大の整数を返します。
decimal
モジュールを使用した正確な丸め
金融アプリケーションを扱う場合や、高い精度が必要な場合は、decimal
モジュールを使用することをお勧めします。これにより、より正確な10進数表現とさまざまな丸め戦略が可能になります。
例: decimal
を使用した丸め
from decimal import Decimal, ROUND_HALF_UP number = Decimal('2.675') rounded_number = number.quantize(Decimal('0.01'), rounding=ROUND_HALF_UP) print(rounded_number) # 出力: 2.68
この例では、ROUND_HALF_UP
は、2つの可能性のちょうど中間の場合は、ゼロから離れるように数値を丸めます。これは、学校で教えられている標準的な丸め方法です。
NumPyを使用した配列の丸め
配列を含む数値計算の場合、NumPyは効率的な丸め関数を提供します。
例: NumPyを使用した丸め
import numpy as np array = np.array([1.234, 5.6789, 9.8765]) rounded_array = np.round(array, 2) print(rounded_array) # 出力: [1.23 5.68 9.88]
NumPyのround()
関数は、配列内の各要素を指定された小数点以下の桁数に丸めます。
まとめ
Pythonには、数値を丸めるための複数の方法が用意されています。
- 基本的な丸めのニーズには
round()
を使用します。 - 常に切り上げまたは切り下げが必要な場合は、
math.ceil()
とmath.floor()
を使用します。 - 特に金融アプリケーションでは、正確な10進数の丸めには
decimal
モジュールを使用します。 - 配列の効率的な操作には、NumPyの丸め関数を使用します。
適切な方法を選択することは、必要な丸め戦略や精度など、アプリケーションの特定の要件によって異なります。
FAQs
Pythonは「round half to even」(bankers' rounding)を使用しており、2が最も近い偶数であるためです。
金融や科学アプリケーションなど、高精度の丸めが必要な場合はdecimal
を使用してください。
はい、NumPyのround()
関数を使用して、配列を効率的に丸めることができます。
Leapcellは、Pythonプロジェクトをホストするための最高の選択肢です。
Leapcellは、Webホスティング、非同期タスク、Redisのための次世代サーバーレスプラットフォームです。
多言語サポート
- Node.js、Python、Go、Rustで開発。
無制限のプロジェクトを無料でデプロイ
- 使用量に応じてのみ支払い — リクエストも料金も発生しません。
比類のないコスト効率
- アイドル料金なしの従量課金制。
- 例:25ドルで、平均応答時間60msで694万リクエストをサポートします。
合理化された開発者エクスペリエンス
- 簡単なセットアップのための直感的なUI。
- 完全に自動化されたCI/CDパイプラインとGitOps統合。
- 実用的な洞察を得るためのリアルタイムのメトリックとロギング。
簡単なスケーラビリティと高性能
- 高い同時実行性を容易に処理するための自動スケーリング。
- 運用上のオーバーヘッドはゼロ — 構築に集中するだけです。
詳細については、ドキュメントをご覧ください。
Xでフォローしてください: @LeapcellHQ