如何在python中舍入整数

tab*_*_an 69 python

我试图在python中循环整数.我查看了内置的round()函数,但它看起来像是浮点数.

我的目标是将整数舍入到10的最接近的倍数.即:5-> 10,4-> 0,95-> 100等.

5和更高应该向上舍入,4和更低应该向下舍入.

这是我的代码:

def round_int(x):
    last_dig = int(str(x)[-1])
    if last_dig >= 5:
        x += 10
    return (x/10) * 10
Run Code Online (Sandbox Code Playgroud)

这是实现我想要实现的目标的最佳方式吗?是否有内置功能可以做到这一点?另外,如果这是最好的方法,那么我在测试中遗漏的代码有什么问题吗?

dat*_*ata 123

实际上,你仍然可以使用圆函数:

>>> print round(1123.456789, -1)
1120.0
Run Code Online (Sandbox Code Playgroud)

这将舍入到10的最接近的倍数.对于100,将-2作为第二个参数,依此类推.


Mar*_*nen 28

round()可以取位数的小数和负数,小数位于小数点的左侧.返回值仍然是一个浮点数,但一个简单的转换修复了:

>>> int(round(5678,-1))
5680
>>> int(round(5678,-2))
5700
>>> int(round(5678,-3))
6000
Run Code Online (Sandbox Code Playgroud)


cob*_*bal 8

稍微简单一些:

def round_int(x):
    return 10 * ((x + 5) // 10)
Run Code Online (Sandbox Code Playgroud)