I have a number like this: int num = 36729;
and I want to get the number of digits that compose the number (in this case 5 digits).
How can I do this?
unsigned int number_of_digits = 0;
do {
++number_of_digits;
n /= base;
} while (n);
Not necessarily the most efficient, but one of the shortest and most readable using C++:
std::to_string(num).length()
And there is a much better way to do it:
#include<cmath>
...
int size = trunc(log10(num)) + 1
...
int digits = 0;
while (num > 0) {
++digits;
num = num / 10;
}
int unsigned_digit_count(unsigned val) {
int count = 0;
do {
count++;
val /= 10;
} while (val);
return count;
}
int digit_count(int val) {
if (val < 0) {
return 1+unsigned_digit_count(-val); // extra digit for the '-'
} else {
return unsigned_digit_count(val);
}
}