# How to Get the Length of an Integer in Ruby?

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

## Converting to Array and Checking the `length`

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

1. Convert integer to an array of digits (using `Integer#digits`);
2. Call the `Array#length` (or `Array#size`) method on the resulting array of digits.
```# Ruby 2.4+
print 12345.digits.length #=> 5
```

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

```# Ruby 2.4+
print -12345.abs.digits.length #=> 5
```

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

```# Ruby 2.4+
def num_length(num)
num.abs.digits.length
end

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 String and Checking the `length`

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

1. Convert integer to string (using `Integer#to_s`);
2. Call the `String#length` method on the resulting string.
```print 12345.to_s.length #=> 5
```

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

```print -12345.abs.to_s.length #=> 5
```

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

```def num_length(num)
num.abs.to_s.length
end

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)
len = 0
loop do
num = (num.abs / 10).to_i
len += 1

if num == 0
break
end
end

len
end

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 `-Infinity`).
```num = 12345
print num == 0 ? 1 : Math.log10(num).to_i + 1 #=> 5
```

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

```num = -12345
print num == 0 ? 1 : Math.log10(num.abs).to_i + 1 #=> 5
```

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

```def num_length(num)
num == 0 ? 1 : Math.log10(num.abs).to_i + 1
end

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
```

This post was published by Daniyal Hamid. Daniyal currently works as the Head of Engineering in Germany and has 20+ years of experience in software engineering, design and marketing. Please show your love and support by sharing this post.