向上舍入到下一个奇数整数

Round a float UP to next odd integer

如何将浮点数 up 舍入为 next 奇数?我发现如何对偶数 here 进行处理。所以我尝试了类似的东西:

import numpy as np

def round_up_to_odd(f):
    return np.ceil(f / 2.) * 2 + 1

但是当然这不会四舍五入到下一个奇数:

>>> odd(32.6)
35.0

有什么建议吗?

怎么样:

def round_up_to_odd(f):
    f = int(np.ceil(f))
    return f + 1 if f % 2 == 0 else f

思路是先四舍五入为整数,然后检查整数是奇数还是偶数。

分割前需要ceil:

import numpy as np

def round_up_to_odd(f):
    return np.ceil(f) // 2 * 2 + 1