有许多人四舍五入到最接近的十分钟的例子,但我不知道四舍五入到最接近的六分钟背后的逻辑。我原以为是换几个数字的问题,但我没法让它发挥作用。
我正在使用的代码位于my Github。我得到的块甚至不接近工作状态(不会给出任何输出)是:

def companyTimer():
    if minutes % 6 > .5:
        companyMinutes = minutes + 1
    elif minutes % 6 < 5:
        companyMinutes = minutes - 1
    else:
        companyMinutes = minutes
    print companyMinutes

现在来看,我发现我的逻辑是不正确的——即使它正常工作,代码的加减1分钟部分也没有意义。
不管怎样,我不知道该怎么补救——请有人指点我正确的方向好吗?
PS-这是我为个人工作做的……不要求我的工作帮助,但这将帮助我跟踪我的工作时间。不想有任何问题。
谢谢!

最佳答案

这里有一个通用函数,可以四舍五入到最接近的值:

def round_to_nearest(num, base):
    n = num + (base//2)
    return n - (n % base)

[round_to_nearest(i, 6) for i in range(20)]
# [0, 0, 0, 6, 6, 6, 6, 6, 6, 12, 12, 12, 12, 12, 12, 18, 18, 18, 18, 18]

说明:
x是将n % base除以n时剩下的余数。也称为modulo operator.
简单地从base中减去num%6会得到0表示0-5,6表示6-11,依此类推。
因为我们想要“圆形”而不是“地板”,所以我们可以通过预先添加一半的基础(num)来偏向这个结果。

关于python - Python 2 - 你如何向上/向下舍入到最近的6分钟?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29545758/

10-12 05:02