【发布时间】:2015-04-18 16:19:43
【问题描述】:
我希望将整数,例如 23457689 更改为 689,将 12457245 更改为 245 等。
我不需要对数字进行四舍五入,也不希望必须转换为字符串。
有什么想法可以在 Python 2.7 中完成吗?
【问题讨论】:
我希望将整数,例如 23457689 更改为 689,将 12457245 更改为 245 等。
我不需要对数字进行四舍五入,也不希望必须转换为字符串。
有什么想法可以在 Python 2.7 中完成吗?
【问题讨论】:
【讨论】:
正确处理正整数和负整数:
>>> x = -23457689
>>> print abs(x) % 1000
689
作为一个函数,您可以选择要保留的前导位数:
import math
def extract_digits(integer, digits=3, keep_sign=False):
sign = 1 if not keep_sign else int(math.copysign(1, integer))
return abs(integer) % (10**digits) * sign
避免转换为str 的约束过于迂腐。如果数字的格式可能会发生变化,或者需要保留的尾随数字的格式会发生变化,那么转换为 str 将是一个很好的方法。
>>> int(str(x)[-3:])
^^^^^ Easier to modify this than shoe-horning the mod function.
【讨论】:
float 中提取数字,那么 mod 将毫无用处(特别是考虑到舍入),但相同的 @基于 987654328@ 的规则(或简单的更改,例如在 . 上拆分)可能仍然有效。 str 方法在它是重要的整数的实际属性的情况下效果很好(比如mod-ing 它).. 但它也在它是一个更复杂的属性时效果很好数字。这就是我的意思是在格式发生变化时更容易。 mod 在这种情况下对非算术变化很脆弱。