2

我有一个浮点数,我想将其舍入为整数,但始终向上舍入(其中“向上”表示幅度较大)

例如,4.2 将四舍五入为 5,-4.2 将四舍五入为 -5.0

有没有一种内置在 Python 中的好方法来做到这一点?如果没有,您会推荐什么作为执行此操作的最有效方法?

最初我只是使用math.ceil(),直到我意识到math.ceil(4.2)给出 5,而math.ceil(-4.2)给出 -4,这不是我想要的。

解决这个问题的一种方法是使用ceil正数和floor负数,但是代码开始看起来很恶心,到处都是内联 if 语句(我在多个地方使用这个操作)

另一种可能性可能是类似的东西math.copysign( math.ceil( abs( x ) ), x ),似乎也有点过分

4

2 回答 2

5

但是代码开始看起来真的很恶心,到处都是内联 if 语句(我在多个地方使用了这个操作)

然后写一个函数:

def myround(flt):
   return math.ceil(flt) if flt > 0.0 else math.floor(flt)
于 2013-06-24T17:18:08.463 回答
3

如果您不想到处散布“内联 if 语句”,您可以定义自己的函数:

def my_rounding(x):
    return math.ceil(x) if x > 0. else math.floor(x)

:D

于 2013-06-24T17:18:02.327 回答