Pythonで数値を四捨五入する方法は主に2つあります。一つは組み込み関数のround
を使用する方法、もう一つはdecimal
モジュールのquantize
を使用する方法です。
roundを使用する方法
round
関数はPythonの組み込み関数で、以下のように使用します。
round(100.567) # 結果: 101
round(100.567, 1) # 結果: 100.6
round(100.567, 2) # 結果: 100.57
第2パラメータが丸める桁数です。round(100.567, 1)
とすると、小数2桁が四捨五入され、小数1桁となります。第2パラメータを省略すると、整数となります。
ただし、round
関数は偶数丸めなので、例えば0.5
を整数に丸めようとしてround(0.5)
としても1
にはならず0
となってしまいます。そのため、一般的な四捨五入としては使えません。
quantizeを使用する方法
quantize
関数はdecimal
モジュールの関数で、以下のように使用します。
from decimal import Decimal, ROUND_HALF_UP, ROUND_HALF_EVEN
# 整数で丸め
Decimal(str(100.567)).quantize(Decimal('0'), rounding=ROUND_HALF_UP) # 結果: 101
# 小数第1位
Decimal(str(100.567)).quantize(Decimal('0.1'), rounding=ROUND_HALF_UP) # 結果: 100.6
# 小数第2位
Decimal(str(100.567)).quantize(Decimal('0.01'), rounding=ROUND_HALF_UP) # 結果: 100.57
Decimal
のquantize
を使えば一般的な四捨五入が可能です。Decimal(str(数値))
のように、数値をstr
でstr型に変換します。str型にしないとDecimalとして扱えません。
以上、Pythonで四捨五入を行う方法について解説しました。round
関数とquantize
関数、それぞれの特性を理解し、適切な関数を選んで使用しましょう。