Decimal
decimal --- 十進固定及び浮動小数点数の算術演算 — Python 3.10.6 ドキュメント例題
B - Broken Roundingfrom decimal import Decimal, ROUND_HALF_UP X, K = map(int, input().split()) for i in range(K): X = int(Decimal(X).quantize(Decimal('1E' + str(i + 1)), rounding=ROUND_HALF_UP)) print(X)
自分で実装する
四捨五入の操作を自分で実装するほうが簡単なこともある.例題
B - Broken Rounding【素直な操作】
手計算するときの四捨五入を真面目に実装する.
X, K = map(int, input().split()) def f(x, i): x //= 10 ** i q, r = divmod(x, 10) if r >= 5: return (q + 1) * (10 ** (i + 1)) else: return q * (10 ** (i + 1)) for i in range(K): X = f(X, i) print(X)
【予め繰り上げておく】
四捨五入する位に5を足してから,その位を切り捨てる.
X, K = map(int, input().split()) def f(x, i): x += 5 * (10 ** i) x //= 10 ** (i + 1) x *= 10 ** (i + 1) return x for i in range(K): X = f(X, i) print(X)