1

我知道 Python3 的 round() 函数会四舍五入到最接近的偶数。

我怎样才能防止这种情况发生,并像 Python2 那样使它从零接近一半?

4

2 回答 2

5

您可以使用DecimalROUND_HALF_UP十进制

from decimal import Decimal, ROUND_HALF_UP

print(Decimal(2.5).quantize(0, ROUND_HALF_UP)) # 3
print(Decimal(-2.5).quantize(0, ROUND_HALF_UP)) # -3
于 2020-01-16T17:19:32.687 回答
0

另一个选项显示“如果您需要 Python 2 行为”之后。复制相关代码:

import math
def my_round(x, d=0):
    p = 10 ** d
    if x > 0:
        return float(math.floor((x * p) + 0.5))/p
    else:
        return float(math.ceil((x * p) - 0.5))/p
于 2020-01-16T17:40:04.473 回答