一、向上取整
由于a >1, b>1且a、b均为整数,故可以设 a = nb + m(其中,n为非负整数, 0<=m<=b-1)
则, a/b = n + m/b
(a + b - 1)/b = (nb + m + b - 1)/b = n + 1 + (m - 1)/b
故int ((a + b - 1)/b) = int ((nb + m + b - 1)/b) = n + 1 + int ((m - 1)/b)
下面通过讨论m的取值,证明a/b向上取整即为int ((a + b - 1)/b):
假设a/b向上取整即为up(a/b).
(1) m = 0 时,
up(a/b) = n + m/b = n
int ((a + b - 1)/b) = a/b + int (1 - 1/b) = n + 0 = 0
故m = 0 时,up(a/b) = int ((a + b - 1)/b)
(2) 1<= m <= b-1 时,
up(a/b) = n + m/b = n + 1
int ((a + b - 1)/b) = n + 1 + int ((m-1)/b) = n + 1
故 1<= m <= b-1 时, up(a/b) = int ((a + b - 1)/b)
由(1)、(2)可得,
a > 1, b > 1且 a、b均为整数时, a/b向上取整即为int ((a + b - 1)/b) 或 int((a-1)/b + 1)
二、向下取整
向下取整就简单了:
a > 1, b > 1且 a、b均为整数时, a/b向下取整即为int (a /b)