如何使用数学模块舍入到32(Python 3,)

时间:2014-01-13 20:49:47

标签: python math python-3.x rounding

是否可以使用内置数学模块对文字进行舍入?我知道你可以使用math.floor()向下舍入,但有没有办法进行舍入?目前,我用这个来围绕:

def roundTo32(x, base=32):
    return int(base * round(float(x) / base))

但这并不总是四舍五入。

2 个答案:

答案 0 :(得分:3)

使用math.ceil()向上舍入浮动值:

import math

def roundTo32(x, base=32):
    return int(base * math.ceil(float(x) / base))

演示:

>>> import math
>>> def roundTo32(x, base=32):
...     return int(base * math.ceil(float(x) / base))
... 
>>> roundTo32(15)
32
>>> roundTo32(33)
64

答案 1 :(得分:0)

如果你只想使用整数,你也可以这样做:

def roundTo32(x):
    return (x + 31) & ~31

部分& ~31是可能的,因为32是2的幂。