Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get last three digits of an integer

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?

like image 291
Luke Gatt Avatar asked Feb 17 '15 20:02

Luke Gatt


People also ask

How do I get the last digit of an integer?

Find the last digit of the number by the formula: int lastDigit = n % (10); (Use modular division - the operator % in C#). Print the result on the console (Console. WriteLine(lastDigit));)


2 Answers

Use the % operation:

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

% is the mod (i.e. modulo) operation.

like image 126
Warren Weckesser Avatar answered Sep 20 '22 14:09

Warren Weckesser


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.
like image 37
ely Avatar answered Sep 22 '22 14:09

ely