• 13
• 16
• 27
• 9
• 9

# Finding the number of digits

This topic is 4543 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

How do I find the number of digits in a number? I'm trying to make my own square root algorithm, and I want to break my number (ex: 123456) into different sections (ex: 100000, 20000, 3000, etc.) so I want to find the number of digits: 6 round the number to that many digits, and go from there. and what should the number be? a string or a number?

##### Share on other sites
i'd convert to a strong and use a len function. but thats not recomended as it limits your function to the base it was written in.

##### Share on other sites
Recursive/repeated application of modulo and divide.

##### Share on other sites
Something like this perhaps:
unsigned digits(unsigned value) { unsigned count, limit = 10; for(count = 1; value >= limit; ++count) {  limit *= 10; } return count;}
But why do you need to number of decimal digits for a square root algorithm?

edit: Oh, I just read the rest of your question. Oluseyi is right, you really want to use / and % or even the infamous div function. But you should *really* consider doing the whole thing in binary instead, it'll be a whole lot easier/faster.

Ok thanks!

##### Share on other sites
Of course, you might want to look into taking the log base 10 of your number.

##### Share on other sites
You could just truncate log and add one:

floor(log(13.0)) + 1.0
floor(1.11394335) + 1.0
1.0 + 1.0
2.0