Obtener el número de dígitos de un número

Tengo un número como este: int num = 36729; y quiero obtener el número de dígitos que componen el número (en este caso, 5 dígitos).

¿Cómo puedo hacer esto?

Usa esta fórmula:

 if(num) return floor(log10(abs((double) num)) + 1); return 1; 
 int digits = 0; while (num > 0) { ++digits; num = num / 10; } 

Pista: usa los operadores / y % .

 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); } } 
 int findcount(int num) { int count = 0; if(num != 0){ while(num) { num /= 10; count ++; } return count ; } else return 1; } 

Para cualquier entrada que no sea 0, calcule el logaritmo en base 10 del valor absoluto de la entrada, tome el piso de ese resultado y agregue 1:

 int dig; ... if (input == 0) dig = 1; else dig = (int) floor(log10(abs((double) input))) + 1; 

0 es un caso especial y debe manejarse por separado.

Ineficiente, pero extrañamente elegante …

 #include  #include  int main(void) { // code to get value char str[50]; sprintf(str, "%d", value); printf("The %d has %d digits.\n", value, strlen(str)); return 0; } 

¿No puedes hacer esto?

  int num = 36729; num.ToString().Length