将整数四舍五入到最接近的10
我正在尝试在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作为第二个参数,依此类推。