[Numpy-discussion] Equvalent function for Ceil() and Floor()
Robert Kern
robert.kern at gmail.com
Mon May 20 11:37:16 EDT 2013
On Mon, May 20, 2013 at 4:21 PM, Bakhtiyor Zokhidov
<bakhtiyor_zokhidov at 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
More information about the NumPy-Discussion
mailing list