You can get the number of digits in a JavaScript number in the following ways:

- Converting to String and Checking the
`length`

; - Calculating the Number of Digits;
- Looping and Removing Digits Off the End.

If the number you wish to calculate the length for is very large (e.g. `Number.MAX_VALUE`

), then you should consider converting the number to bigint first.

## Converting to String and Checking the `length`

You can simply convert the number to a string and access the `length`

property on it to find the total number of digits in the number:

// ES6+ const numLen = (num) => String(Math.abs(num)).length; console.log(numLen(0)); // 1 console.log(numLen(-0)); // 1 console.log(numLen(-12345)); // 5 console.log(numLen(12345)); // 5

For versions earlier than ES6, you can use the traditional function syntax instead of an arrow function (as arrow function was introduced in ES6).

`Math.abs()`

is needed so that the minus symbol is removed from a negative number prior to converting the number to a string. Otherwise, the minus symbol (`-`

) will be converted to string as is and will be counted in the string length.

## Calculating the Number of Digits

You can calculate the number of digits in a number in the following way:

// ES6+ const numLen = (num) => (num === 0) ? 1 : Math.ceil(Math.log10(Math.abs(num) + 1)) ; console.log(numLen(0)); // 1 console.log(numLen(-0)); // 1 console.log(numLen(12345)); // 5 console.log(numLen(-12345)); // 5

The check for `0`

is necessary as `log10(0)`

is equal to `-Infinity`

.

`Math.log10`

was added in ES6; for versions prior to that, you could do the following:

function numLen(num) { if (num === 0) { return 1; } return Math.ceil(Math.log(Math.abs(num) + 1) / Math.LN10); } console.log(numLen(0)); // 1 console.log(numLen(-0)); // 1 console.log(numLen(12345)); // 5 console.log(numLen(-12345)); // 5

## Looping and Removing Digits Off the End

You can simply create a loop, and remove the last digit from the number in each iteration till there are no digits left. In each iteration you can increment a counter, which would give you the total number of digits in the number:

function numLen(num) { let len = 0; do { // take last digit off `num` num = parseInt(num / 10, 10); // increment counter len++; } while (num !== 0); return len; } console.log(numLen(0)); // 1 console.log(numLen(-0)); // 1 console.log(numLen(-12345)); // 5 console.log(numLen(12345)); // 5

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.