Pythonの四捨五入について。
この記事の内容はコチラです
- 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 で四捨五入する方法でした。
コメント