Python 3.x 在python中舍入到下一个5的倍数
当我们把67四舍五入到下一个5的倍数时,答案是70 当我们第64轮时,ans应该是65,但最终是70 我在C++中寻找逻辑 其中我发现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,
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