Last 2 digits of an integer? Python 3
Solution 1
Why don't you extract the absolute value of the number modulus 100? That is, use
abs(num) % 100
to extract the last two digits?
In terms of performance and clarity, this method is hard to beat.
Solution 2
To get the last 2 digits of num
I would use a 1 line simple hack:
str(num)[-2:]
This would give a string. To get an int, just wrap with int:
int(str(num)[-2:])
Solution 3
Simpler way to extract last two digits of the number (less efficient) is to convert the number to str
and slice the last two digits of the number. For example:
# sample function
def get_last_digits(num, last_digits_count=2):
return int(str(num)[-last_digits_count:])
# ^ convert the number back to `int`
OR, you may achieve it via using modulo %
operator (more efficient), (to know more, check How does % work in Python?) as:
def get_last_digits(num, last_digits_count=2):
return abs(num) % (10**last_digits_count)
# ^ perform `%` on absolute value to cover `-`ive numbers
Sample run:
>>> get_last_digits(95432)
32
>>> get_last_digits(2)
2
>>> get_last_digits(34644, last_digits_count=4)
4644
Solution 4
to get the last 2 digits of an integer.
a = int(input())
print(a % 100)
Admin
Updated on January 08, 2021Comments
-
Admin over 3 years
With my code, I want to get the last two digits of an integer. But when I make x a positive number, it will take the first x digits, if it is a negative number, it will remove the first x digits.
Code:
number_of_numbers = 1 num = 9 while number_of_numbers <= 100: done = False num = num*10 num = num+1 while done == False: num_last = int(repr(num)[x]) if num_last%14 == 0: number_of_numbers = number_of_numbers + 1 done = True else: num = num + 1 print(num)
-
cs95 over 7 yearsConversion operations are expensive. Why would you want to do this if there are simpler ways?
-
Moinuddin Quadri over 7 years@Shiva: Now I have explicitly mentioned that conversion is less efficient. Converison is simpler to implement (atleast as per me)