On Mon, May 20, 2013 at 4:21 PM, Bakhtiyor Zokhidov <bakhtiyor_zokhi...@mail.ru> wrote: > Hello, > > I am using ceil() and floor() function to get upper and lower value of some > numbers. Let's say: > > import math > x1 = 0.35 > y1 = 4.46 >>>> math.ceil(x1) > 1.0 > >>>> math.floor(y1) > 4.0 > > The problem is that If I want to get upper and lower values for the certain > step, for example, step = 0.25, ceil() function should give: > new_ceil(x1, step) => 0.5 > new_floor(y1, step) => 4.25 > Because, the step is 0.25 > > Question: How I can I achieve those results by using ceil() and floor() > function, or Is there any equvalent function for that?
For most purposes, the following functions suffice: def new_ceil(x, step): return math.ceil(x / step) * step def new_floor(x, step): return math.floor(x / step) * step Alternately: def new_ceil(x, step): quotient = x // step remainder = x % step return (quotient + (remainder > 0)) * step def new_floor(x, step): quotient = x // step return quotient * step Floating point representation errors and accumulated floating point arithmetic inaccuracies may give you unexpected results in many cases, so be careful. -- Robert Kern _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion