Finding the number of digits

Started by
5 comments, last by Ra 18 years, 6 months ago
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?
Advertisement
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.
| Member of UBAAG (Unban aftermath Association of Gamedev)
Recursive/repeated application of modulo and divide.
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!
Of course, you might want to look into taking the log base 10 of your number.
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
Ra

This topic is closed to new replies.

Advertisement