将整数四舍五入到最接近的10

80 投票
7 回答
120857 浏览
提问于 2025-04-16 01:56

我正在尝试在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

这样做是实现我目标的最佳方法吗?有没有内置的函数可以做到这一点?另外,如果这是最佳方法,我的代码中有没有什么我在测试时遗漏的问题?

7 个回答

8

稍微简单一点:

def round_int(x):
    return 10 * ((x + 5) // 10)
30

round() 函数可以接受整数和负数作为参数,这些参数会影响小数点左边的位数。虽然返回的结果还是浮点数,但你可以简单地转换一下类型来解决这个问题:

>>> int(round(5678,-1))
5680
>>> int(round(5678,-2))
5700
>>> int(round(5678,-3))
6000
141

其实,你还是可以使用round函数:

>>> print round(1123.456789, -1)
1120.0

这个函数会把数字四舍五入到最接近的10的倍数。如果你想四舍五入到100的话,可以把-2作为第二个参数,依此类推。

撰写回答