How to Get the Length of an Integer in Python?

Find out how to determine the length of an integer in Python

You can get the length of an integer in Python in any of the following ways:

Converting to String and Checking the Length

If you have a positive integer, you can do the following:

  1. Convert integer to string (using str());
  2. Call the len() method on the resulting string.
num = 12345
num_str = str(num)
print(len(num_str)) # 5

If the number can potentially be negative, then you must first get the absolute value of the integer:

num = -12345
num_str = str(abs(num))
print(len(num_str)) # 5

To make it reusable, you could make this into a function, for example, like so:

def num_length(num):
    return len(str(abs(num)))

print(num_length(0)) # 1
print(num_length(12345)) # 5
print(num_length(-12345)) # 5
print(num_length(9999999999999999999999999)) # 25
print(num_length(-9999999999999999999999999)) # 25

Converting to list and Checking the Length

If you have a positive integer, you can do the following:

  1. Convert integer to a list of digits;
  2. Call the len() method on the resulting list of digits.

For example, you can do this using list comprehension like so:

num = 12345
digits = [int(x) for x in str(num)]
print(len(digits)) # 5

You can rewrite the same code using map() like so:

num = 12345
digits = list(map(int, str(num)))
print(len(digits)) # 5

If the number can potentially be negative, then you must first get the absolute value of the integer:

num = -12345
digits = [int(x) for x in str(abs(num))]
print(len(digits)) # 5

To make it reusable, you could make this into a function, for example, like so:

def num_length(num):
    digits = [int(x) for x in str(abs(num))]
    return len(digits)

print(num_length(0)) # 1
print(num_length(12345)) # 5
print(num_length(-12345)) # 5
print(num_length(9999999999999999999999999)) # 25
print(num_length(-9999999999999999999999999)) # 25

Looping and Removing Digits Off the End

If you have a positive or a negative integer, you can do the following:

  1. Create a loop, and remove the last digit from the number in each iteration till there are no digits left;
  2. In each iteration, increment a counter, which would give the total number of digits in the number.
def num_length(num):
    num = abs(num)
    length = 0

    while True:
        length += 1
        num = num // 10

        if num == 0:
            break

    return length

print(num_length(0)) # 1
print(num_length(12345)) # 5
print(num_length(-12345)) # 5
print(num_length(9999999999999999999999999)) # 25
print(num_length(-9999999999999999999999999)) # 25

Calculating the Number of Digits

You should use this method with caution as it may give you the wrong result for really large numbers (such as 9999999999999999999999999).

If you have a positive integer, you can do the following:

  1. Calculate the log10 of the number, convert it to an integer and add 1 to the result;
  2. If the number is 0, then return 1 as a count (because log10(0) equals -inf).
import math

num = 12345
length = 1 if num == 0 else int(math.log10(num)) + 1

print(length) #=> 5

If the number can potentially be negative, then you must first get the absolute value of the integer:

import math

num = -12345
length = 1 if num == 0 else int(math.log10(abs(num))) + 1

print(length) #=> 5

To make it reusable, you could make this into a function, for example, like so:

import math

def num_length(num):
    return 1 if num == 0 else int(math.log10(abs(num))) + 1

print(num_length(0)) # 1
print(num_length(12345)) # 5
print(num_length(-12345)) # 5

// this may give wrong result for really large numbers
print(num_length(9999999999999999999999999)) # 26
print(num_length(-9999999999999999999999999)) # 26

Hope you found this post useful. It was published . Please show your love and support by sharing this post.