将奇数舍入到偶数的最佳方法是什么?
我在重写一些旧代码时,遇到了以下内容:
rounded_val = (len(src_string) / 2) * 2
这段代码利用了整数除法的特性,如果字符串的长度是奇数,就把它向下取整到前一个偶数。不过在Python 3中,整数除法的规则要改变了,所以我需要修改这一行代码。
那么,有什么更好的方法来实现这个呢?
5 个回答
1
为什么不这样做:
rounded_val = len(src_string) - len(src_string) % 2
2
//
这个运算符可能是你最好的选择,但你也可以使用divmod
这个函数:
rounded_val = divmod(len(src_string), 2)[0] * 2
11
也许
rounded_val = len(src_string) & ~1
这段代码的作用是清除数字中最右边的1位,这正是你需要的。这个方法只适用于int
类型的数字,但len应该总是整数。
19
如果你不想依赖Python 2中整数运算时的/
行为,可以使用//
来进行取整除法:
rounded_val = (len(src_string) // 2) * 2
4
这样怎么样:
rounded_val = len(src_string) & (-2)
虽然对于不熟悉二进制运算的人来说,这有时候并不明显。