I wish to change an integer such as 23457689 to 689, 12457245 to 245 etc.
I do not require the numbers to be rounded and do not wish to have to convert to String.
Any ideas how this can be done in Python 2.7?
To handle both positive and negative integers correctly:
>>> x = -23457689
>>> print abs(x) % 1000
689
As a function where you can select the number of leading digits to keep:
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
The constraint to avoid converting to str
is too pedantic. Converting to str
would be a good way to do this if the format of the number might change or if the format of the trailing digits that need to be kept will change.
>>> int(str(x)[-3:])
^^^^^ Easier to modify this than shoe-horning the mod function.
来源:https://stackoverflow.com/questions/28570505/get-last-three-digits-of-an-integer