Get last three digits of an integer

后端 未结 2 1826
無奈伤痛
無奈伤痛 2020-12-10 15:22

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.

2条回答
  •  既然无缘
    2020-12-10 15:37

    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.
    

提交回复
热议问题