Python 3.x 在python中舍入到下一个5的倍数

Python 3.x 在python中舍入到下一个5的倍数,python-3.x,Python 3.x,当我们把67四舍五入到下一个5的倍数时,答案是70 当我们第64轮时,ans应该是65,但最终是70 我在C++中寻找逻辑 其中我发现5*(等级[I]+4)/5)用于计算下一个5的倍数 我用python实现的代码是: ground=[] grades=[73,64,67,38,33] for i in range(len(grades)): r=5*(round((grades[i]+4)/5)) ground.append(r) print(ground) 预期输出:[75,

当我们把67四舍五入到下一个5的倍数时,答案是70 当我们第64轮时,ans应该是65,但最终是70

我在C++中寻找逻辑 其中我发现
5*(等级[I]+4)/5)
用于计算下一个5的倍数

我用python实现的代码是:

ground=[]
grades=[73,64,67,38,33]
for i in range(len(grades)):
    r=5*(round((grades[i]+4)/5))
    ground.append(r)
print(ground)
预期输出:
[75,65,70,40,35]
但是
实际输出:
[75,70,70,40,35]

您应该使用
/
运算符(或
int
)而不是
round

ground = []
grades = [73, 64, 67, 38, 33]
for i in range(len(grades)):
    r = 5 * ((grades[i] + 4) // 5)
    ground.append(r)
print(ground)
输出:

[75, 65, 70, 40, 35]

尝试一下,这可能是一个优化的解决方案:

ground=[]
grades=[73,64,67,38,33]
for i in range(len(grades)):
    temp = 5 - grades[i] % 5
    ground.append(grades[i] + temp)
print(ground)

在负数上使用模运算对您有利

def round_up(n, base):
    return n + (-n % base)

grades= [73, 64, 67, 38, 33]
rgrades = [round_up(n, 5) for n in grades] # [75, 65, 70, 40, 35]
这适用于
float
和其他数字类型

round_up(70.5, 5) # 75.0

小心,如果我们允许使用
70.5