Python quantize・round で四捨五入する

Pythonでは「quantize」「round」 で四捨五入することができます。

「round」では正確に四捨五入はできませんが、「quantize」を使えば正確に四捨五入できます。

今回は、Pythonで「quantize」「round」 で四捨五入する方法を解説します。

quantize・roundで四捨五入する

Pythonで四捨五入するには「quantize」「round」があります。

roundで四捨五入する

round(100.567) 
#[結果] 101

round(100.567, 1)
#[結果] 100.6

round(100.567, 2) 
#[結果] 100.57

Pythonで四捨五入をするには「round」を使います。

第2パラメータが丸める桁数です。「round(100.567, 1)」とすると、小数2桁が四捨五入され、小数1桁となります。

第2パラメータを省略すると、整数となります。

roundでは四捨五入できない場合がある

round(0.5) 
#[結果] 0

この「round」は注意が必要です。

「round」は偶数丸めなので、例えば「0.5」を整数に丸めようとして「round(0.5) 」としても「1」にはならず「0」となってしまいます。

なので一般的な四捨五入としては使えません。その場合は次に紹介する「quantize」を使います。

quantizeで四捨五入する

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

Pythonの「Decimal」の「quantize」を使えば一般的な四捨五入が可能です。

Decimal(str(数値))のように、数値を「str」でstr型に変換します。str型にしないとDecimalとして扱えません。

参考ページPython int型・Float型・decmal型(数値型)の使い方 

第1パラメータは桁指定です。小数1桁であれば「Decimal(‘0.1’)」とします。

第2パラメータは丸め種類です。一般的な四捨五入は「rounding=ROUND_HALF_UP」です。

quantizeで正確に四捨五入できる

from decimal import Decimal, ROUND_HALF_UP, ROUND_HALF_EVEN

Decimal(str(0.5)).quantize(Decimal('0'), rounding=ROUND_HALF_UP)
#[結果] 1

「Decimal.quantize」を使えば「0.5」も「1」となり、正確に四捨五入できました。

 

以上、Pythonのquantize・round で四捨五入する方法でした。

コメント