2015-02-17 3 views
6

я желаю, чтобы изменить целое число, например, как 23457689 до 689, 12457245 до 245 и т.д.Получить последние три цифры целого

не требуют номеров, чтобы быть округлены и не хочу иметь, чтобы преобразовать в строку ,

Любые идеи, как это можно сделать в Python 2.7?

ответ

20

Используйте % операцию:

>>> x = 23457689 
>>> x % 1000 
689 

% является операцией mod (т.е. modulo).

+0

Спасибо! Это именно то, что мне нужно. –

9

Чтобы правильно обрабатывать как положительные, так и отрицательные числа:

>>> 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. 
+0

Спасибо, но мне просто нужно было извлечь последние цифры и сюжет, значения никогда не изменились. Я мог бы использовать это также –

+2

«значения никогда не изменились бы», - сказал каждый программист. – ely

+0

Наверное, мне еще есть чему поучиться. –

Смежные вопросы