プログラミングコンテストでは、計算結果が小数となるが出力は整数を求めるられる場合が多々あります。今回は計算結果を四捨五入して解答する必要がある場合を想定し、その四捨五入の操作について説明します。以下のように decimalモジュールをimportして行えば簡単です。
from decimal import *
number1 = 1.4 #四捨する例
print(Decimal(str(number1)).quantize(Decimal('0'), rounding=ROUND_HALF_UP))
# --> 1
number2 = 2.5 #五入する例
print(Decimal(str(number2)).quantize(Decimal('0'), rounding=ROUND_HALF_UP))
# --> 3
ぱっと見た感じではややこしそうですが、
Decimal(str(A)).quantize(Decimal('B'), rounding=ROUND_HALF_UP)
上記Aの部分に任意の小数を入れ、Bの部分で桁数を指定する数字を入れれば大丈夫です。
(Bの部分の桁数の指定方法)
・整数にしたいとき: 0
・第1位までにしたいとき: 0.1
・第2位までにしたいとき: 0.01 といった感じになります。
ちなみに、別の関数である round( )を使っても似たような感じになりますが、以下に示すように正確な四捨五入とはならないので、注意が必要です。
number1 = 1.4 #四捨する例
print(round(number1))
# --> 1 ・四捨できている
number2 = 2.5 #五入する例
print(round(number2))
# --> 2 ・五入できていない!
round( ) は,四捨五入ではなく,「結果を偶数になるように丸める」のが仕様で、上記のように出力されるそうです。