我知道 Python3 的 round() 函数会四舍五入到最接近的偶数。
我怎样才能防止这种情况发生,并像 Python2 那样使它从零接近一半?
您可以使用Decimal和ROUND_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
另一个选项显示在“如果您需要 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