如何将任何数字四舍五入到最接近的5的倍数?

时间:2019-06-03 06:10:28

标签: python python-3.x algorithm

我一直在尝试将任何数字四舍五入到最接近的5的倍数。要说的是,我的意思是它应该总是四舍五入。但是,我的代码总是根据我输入的数字向上或向下四舍五入到最接近的5的倍数。数字始终是int整个数字。这是我的代码:

num = int(input())
base = 5
for x in range(num):
    number = int(input())
    round_off = base * round(number/base)
    print(round_off)

输入和输出:

in:4
in:73
out:75 #correct
in:67
out:65 #wrong, should be 70
in:38
out:40 #correct
in:33
out:35 #correct

如您所见,只有67或其他类似的东西(如57)会给我错误的输出。如何修复代码以获得正确的输出?

2 个答案:

答案 0 :(得分:1)

您需要始终四舍五入

import math
round_off = base * math.ceil(number / base)

答案 1 :(得分:0)

如果您始终想四舍五入,可以:

num = int(input())
if num % 5 != 0:
  num += 5
  num -= (num % 5)

如果您想要一支班轮:

num = num if num % 5 == 0 else num + 5 - (num % 5)

注意:两个示例都使用通用整数base而不是5:

num = num if num % base == 0 else num + base - (base % 5)