如何四舍五入到特定的预定义数字?

时间:2019-01-26 01:54:22

标签: python python-3.x

在python 3中,我需要将数字四舍五入为0、25、50、75或100。还有其他类似问题的线程,但是我无法将它们包裹住。

我试图通过比较差异来四舍五入,这可能是我做错了。 (此代码未完成,当我意识到它的开头不起作用时我没有继续)

Position = int(input())

RC1 = 25 - Position
RC2 = 50 - Position
RC3 = 75 - Position

if (RC1 < RC2):
    Position = 25
if (RC2 < RC3):
    Position = 50

我希望它输出最接近的数字。例如。 20变成25,42变成50等等。

3 个答案:

答案 0 :(得分:3)

您可以使用除法和舍入将数字映射到最接近的位置:

num = int(input())

Position= (round(num/25)*25)

print(Position)

答案 1 :(得分:2)

您可以使用类似的方法来确定预定义VALUES列表中输入值位于哪个值中,然后确定最接近的两个值。请注意,此方法不对列表中的值进行任何假设,只是它们以升序排列(允许它们不相等隔开):

def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = iter(iterable), iter(iterable)
    next(b, None)
    return zip(a, b)


VALUES = 0, 25, 50, 75, 100

posn = int(input("Enter position: "))

for lo, hi in pairwise(VALUES):
    if lo <= posn <= hi:
        if posn-lo < hi-posn:
            posn = lo
        else:
            posn = hi
        break
else:
    raise ValueError('A position of {} is out of range'.format(posn))

print('rounded position:', posn)

答案 2 :(得分:0)

def round_func(position):
    VALUES = 25, 50, 75, 100
    result = 100
    if position < 0:
        return -1
    for i in VALUES:
        if position < i:
            result = i if i - position < 25 - (i - position) else i - 25
            break
    return result

print(round_func(int(input())))